iOS 百度地图轨迹回放

作者: 梦iOS | 来源:发表于2016-11-29 14:51 被阅读0次

    我上次说的设置大头针的图片的方法,设置完了是不是发现图片位置不对?然后又没法微调位置对不对?

    1.重新定义一个类继承BMKAnnotationView,并重写

    初始化并返回一个annotation view

    @param annotation关联的annotation对象

    @param reuseIdentifier如果要重用view,传入一个字符串,否则设为nil,建议重用view

    @return初始化成功则返回annotation view,否则返回nil

    楼主实例代码

    - (id)initWithAnnotation:(id)annotation reuseIdentifier:(NSString*)reuseIdentifier {

    self= [superinitWithAnnotation:annotationreuseIdentifier:reuseIdentifier];这句话必须有

    if(self) {

    [selfsetBounds:CGRectMake(0.f,0.f,22.f,22.f)];

    _imageView= [[UIImageViewalloc]initWithFrame:CGRectMake(0.f,0.f,22.f,22.f)];微调位置

    _imageView.image= [UIImage imageNamed:@"sportarrow.png"];

    [selfaddSubview:_imageView];

    }

    returnself;

    }

    1.初始化轨迹点

    1.1你得把你的起点和终点显示出来吧(你得先有经纬度数据)

    1.2存储所有位置

    BMKMapPoint *points =new BMKMapPoint[count]; C++编译,文件至少保持一个.mm文件

    1.3清除其他划线,并添加轨迹

    根据指定坐标点生成一段折线

    param points指定的直角坐标点数组

    count坐标点的个数

    新生成的折线对象

    self.polyLine= [BMKPolyline polylineWithPoints:points count:count];

    1.4添加轨迹

    [self.map ViewaddOverlay:self.polyLine];

    1.5根据polyline设置地图范围

    就是这个方法

    1.6计算两点之间的距离(有这个才能设置动画时间)

    #pragma计算两点距离

    -(double)reckonNodeDistance : (CLLocationCoordinate2D)startCoordina andEndNode : (CLLocationCoordinate2D)endCoordina{

    CLLocation*orig=[[CLLocationalloc]initWithLatitude:startCoordina.latitudelongitude:startCoordina.longitude] ;

    CLLocation* dist=[[CLLocationalloc]initWithLatitude:endCoordina.latitudelongitude:endCoordina.longitude];

    CLLocationDistance kilometers=[orig distanceFromLocation:dist]/1000;

    return kilometers;(双精度)

    }

    1.7轨迹运行动画

    -(void)creatCarTrailPoint:(CLLocationCoordinate2D)coordina title:(NSString*)title distance : (double)distancecarSpeed : (double) speed{

    [_mapViewsetZoomLevel:11];

    //_sportAnnotationView.imageView.transform = CGAffineTransformMakeRotation([[[_requestData objectForKey:@"data"][timerNum + 2] objectForKey:@"msg_direction "] doubleValue]);

    [UIView animateWithDuration:diatance/speed animations:^{

    _car_trail_point.coordinate= coordina;

    _car_trail_point.title= title;

    [self.mapViewaddAnnotation:_car_trail_point];

    BMKCoordinateRegionregion;

    region.center= coordina;

    [_mapViewsetRegion:regionanimated:YES];

    }completion:nil];

    }

    使用动画效果来改变大头针经纬度可以实现平移效果,用计算的距离和速度来获取动画时间

    注:以上纯属个人思路,建议新手学习。大神路过勿喷

    相关文章

      网友评论

        本文标题:iOS 百度地图轨迹回放

        本文链接:https://www.haomeiwen.com/subject/ubdbpttx.html