IOS 高德地图获取用户导航路径

标题

最近项目里有一个需求,用户开始导航之后,要将导航的路径传到服务器,在另一个客户端显示所有用户的导航路径。

## 思路 ##
要实现这个功能,最关键的一点就是当用户导航之后如何取到路径。笔者是用的高德地图,在这里说说我的实现。

见上一篇博客,我们已经初始化了一个导航视图。导航开始之后,会有一个回调方法

- (void)driveManagerOnCalculateRouteSuccess:(AMapNaviDriveManager *)driveManager;

该回调方法的driveManager中有一个AMapNaviRoute类对象,这个就是导航路线类。
获取到该对象后

#pragma mark - 根据取到的AMapNaviRoute 画线
- (void)showRouteWithNaviRoute:(AMapNaviRoute *)naviRoute
{
    NSLog(@"1---%@",naviRoute);
    if (naviRoute == nil)
    {
        return;
    }
    // 清除旧的overlays
    if (_polyline)
    {
        [_map removeOverlay:_polyline];
        _polyline = nil;
    }
    NSUInteger coordianteCount = [naviRoute.routeCoordinates count];
    CLLocationCoordinate2D coordinates[coordianteCount];
    NSLog(@"%@",naviRoute.routeCoordinates);
    for (int i = 0; i < coordianteCount; i++)
    {
        AMapNaviPoint *aCoordinate = [naviRoute.routeCoordinates objectAtIndex:i];
        coordinates[i] = CLLocationCoordinate2DMake(aCoordinate.latitude, aCoordinate.longitude);
        [uploadRouteDic setValue:[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"%f",aCoordinate.latitude],@"latitude",[NSString stringWithFormat:@"%f",aCoordinate.longitude],@"longitude", nil] forKey:[NSString stringWithFormat:@"%d",i]];
    }
    _polyline = [MAPolyline polylineWithCoordinates:coordinates count:coordianteCount];
    [_map addOverlay:_polyline];
    /********************************************/
    NSLog(@"要上传的字典:%@",uploadRouteDic);
}

//在地图上根据数据画线
- (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id <MAOverlay>)overlay {
    if ([overlay isKindOfClass:[MAPolyline class]])
    {
        MAPolylineRenderer *polylineRenderer = [[MAPolylineRenderer alloc] initWithOverlay:overlay];

        polylineRenderer.lineWidth    = 8.f;
        polylineRenderer.strokeColor  = [UIColor colorWithRed:1 green:0 blue:0 alpha:0.6];
        polylineRenderer.lineJoinType = kMALineJoinRound;
        polylineRenderer.lineCapType  = kMALineCapRound;

        return polylineRenderer;
    }
    return nil;
}

我们通过这两个方法,就可以取到路径,并且在地图上绘制路径了。注:高德地图最新SDK绘制overlay的方法与之前不太一样,上面代码为最新SDK的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值