百度地图 - 轨迹回放

一、百度地图轨迹画线:

1、集成百度地图,申请并配置好Appkey,在视图控制器中初始化一个百度地图

//初始化百度地图
    _mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_HEIGHT-64)];
    [self.view addSubview:_mapView];

2、准备好一串GPS坐标点,这里我自己弄了一个Json文件:route_points_demo.json,在文件中放了32个GPS坐标,直接从这个文件中将数据获取到放到数组中:

//准备GPS数据
- (void)setJUNKdata {
    trackArray = [[NSMutableArray alloc] init];
    //读取Json文件中的GPS坐标点
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"route_points_demo" ofType:@"json"];
    NSString *jsonStr  = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
    NSData *jaonData   = [[NSData alloc] initWithData:[jsonStr dataUsingEncoding:NSUTF8StringEncoding]];
    allTrack = [NSJSONSerialization JSONObjectWithData:jaonData options:(NSJSONReadingMutableContainers) error:nil];
    //将坐标点放进数组trackArray中
    for(int i=0; i<allTrack.count; i++) {
        NSDictionary *dic = allTrack[i];
        double lat = [[dic valueForKey:@"latitude"] doubleValue];
        double lon = [[dic objectForKey:@"longitude"] doubleValue];
        CLLocation *location = [[CLLocation alloc] initWithLatitude:lat longitude:lon];
        [trackArray addObject:location];
    }
    [self addCovering];
}

3、调用addCovering进行轨迹画线,将CLLocationCoordinate2D数组转换成CLLocation类型的数组,然后以此数组来初始化一个BMKPolyline,最后调用百度地图的画折线的方法:addOverlay

//地图画线
- (void)addCovering{
    CLLocation *current;
    CLLocationCoordinate2D track[trackArray.count];
    for(int i=0; i<trackArray.count; i++){
        current = trackArray[i];
        track[i].latitude = current.coordinate.latitude;
        track[i].longitude = current.coordinate.longitude;
    }

    //轨迹画线
    BMKPolyline* polyline = [BMKPolyline polylineWithCoordinates:track count:trackArray.count];
    [_mapView addOverlay:polyline];

}

4、调用了addOverlay后,会自动回调一个方法:

- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id <BMKOverlay>)overlay{
    //添加标注
    if ([overlay isKindOfClass:[BMKPolyline class]]){
        BMKPolylineView* polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];
        polylineView.strokeColor =  MCOLOR_707070;  //线的颜色
        polylineView.lineWidth = 4.0;               //线的宽度
        return polylineView;

    }
    return nil;
}

5、就这样,轨迹划线完成 !看效果图
这里写图片描述

附:坐标文件route_points_demo.json下载地址:
http://download.csdn.net/download/luohancc/9109923

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值