百度地图绘制轨迹

最近项目需要做到这个功能,写篇博客,只是自我总结,没有时间写demo,先上效果图:


先说思路,我们的项目是一秒走一个经纬度及画一条线段,可前进后退,先用定时器重复执行一个方法,方法就处理小点前进的动画,绘制路线我是每次清空,重新绘制的,设置一个全局变量,记录下当下小点移动到哪个位置,这次好进行前进后退的处理,思路其实很简单的

#pragma mark---------划线代理回调----------
- (BMKOverlayView*)mapView:(BMKMapView *)map viewForOverlay:(id<BMKOverlay>)overlay
{
    if ([overlay isKindOfClass:[BMKPolyline class]]) {
        BMKPolylineView* polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];
        polylineView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:1];
        polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
        polylineView.lineWidth = 2.0f;
        return polylineView;
    }
    return nil;
}
复制代码

    BMKPointAnnotation * antion = [[BMKPointAnnotation alloc]init];
    antion.title = @"";
    antion.coordinate = _coors[_index-1];
    [_mapView addAnnotation:antion];
    
    
    //重复再添加一次起点和终点
    KJBHomeHistoricalTrackAnnotation * Annotation = [[KJBHomeHistoricalTrackAnnotation alloc]init];
    Annotation.type =0;
    Annotation.coordinate = _coors[0];
    [_mapView addAnnotation:Annotation];
    
    
    Annotation = [[KJBHomeHistoricalTrackAnnotation alloc] init];
    Annotation.type = 1;
    Annotation.coordinate = _coors[Max];
    [_mapView addAnnotation:Annotation];
    //轨迹绘制
    BMKPolyline  * polyline = [BMKPolyline polylineWithCoordinates:_coors count:_index];
    [_mapView addOverlay:polyline];
复制代码

// 根据polyline设置地图范围
- (void)mapViewFitPolyLine:(BMKPolyline *) polyLine {
    CGFloat ltX, ltY, rbX, rbY;
    if (polyLine.pointCount < 1) {
        return;
    }
    BMKMapPoint pt = polyLine.points[0];
    ltX = pt.x; ltY = pt.y;
    rbX = pt.x; rbY = pt.y;
    for (int i = 1; i < polyLine.pointCount; i++) {
        BMKMapPoint pt = polyLine.points[i];
        if (pt.x < ltX) {
            ltX = pt.x;
        }
        if (pt.x > rbX) {
            rbX = pt.x;
        }
        if (pt.y > ltY) {
            ltY = pt.y;
        }
        if (pt.y < rbY) {
            rbY = pt.y;
        }
    }
    BMKMapRect rect;
    rect.origin = BMKMapPointMake(ltX , ltY);
    rect.size = BMKMapSizeMake(rbX - ltX, rbY - ltY);
    [_mapView setVisibleMapRect:rect];
}复制代码

到这里,代码就结束了,在viewWillDisappear中别忘了设置_mapView.delegate为nil,

定时器也要及时释放调


转载于:https://juejin.im/post/5cb98c30f265da03705fb288

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值