浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
更新时间:2022-04-06
绘制动态轨迹简介

Since6.4.0起支持动态轨迹绘制,开发者可以提供轨迹数据,来动态展示轨迹。支持监听轨迹绘制状态。Since 6.5.6起iOS地图SDK动态轨迹支持渐变色绘制和.gltf+.bin模型加载,并支持动画播放。

绘制动态轨迹
1添加动态轨迹覆盖物数据
Objective-C
Swift
BMKTraceOverlay *traceOverlay = [BMKTraceOverlay traceOverlayWithCoordinates:_coords count:_coordsCount option:self.animationOption];
    /// 是否使用渐变色轨迹
    /// 注意:要配合strokeColors使用,否则无效
    traceOverlay.isGradientColor = YES;
    /// 是否使用发光轨迹
    traceOverlay.isTrackBloom = YES;
    traceOverlay.bloomSpeed = 5.0f;
    traceOverlay.delegate = self;
    [self.mapView addOverlay:traceOverlay];
 /// 轨迹动画选项
- (BMKTraceOverlayOption *)animationOption {
    if (!_animationOption) {
        _animationOption = [[BMKTraceOverlayOption alloc] init];
        _animationOption.animate = YES; // 是否动画
        _animationOption.delay = 0.0; // 动画延迟开始时间
        _animationOption.duration = 10.0; // 动画时间
        _animationOption.fromValue = 0.0;
        _animationOption.toValue = 1.0;
        _animationOption.easingCurve = BMKTraceOverlayAnimationEasingCurveLinear;
        _animationOption.trackMove = NO; // 是否跟踪轨迹动画(地图跟随移动)
        _animationOption.pointMove = YES;
        BMKTrace3DModelOption *option = [[BMKTrace3DModelOption alloc] init];
        option.scale = 5;
        option.modelName = @"scenes";
        option.rotateX = 90;
        option.rotateY = -90;
        option.type = BMK3DModelTypeGLTF;
        option.modelYawAxis = BMKTraceOverlay3DModelYawAxisY;
        option.modelPath = [NSString stringWithFormat:@"%@/Model3D", [NSBundle mainBundle].bundlePath];
        option.animationIsEnable = YES;
        option.animationSpeed = 1;
        option.animationRepeatCount = 0;
        option.animationIndex = 1;
        _animationOption.modelOption = option;
    }
    return _animationOption;
}
/// 轨迹图层
    lazy var traceOverlay: BMKTraceOverlay = {
        let overlay = BMKTraceOverlay(coordinates: &coords, count: UInt(coordsCount), option: traceOverlayOption)
        overlay!.delegate = self
        /// 是否使用渐变色轨迹
        /// 注意:要配合strokeColors使用,否则无效
        overlay!.isGradientColor = true
        overlay!.isTrackBloom = true
        overlay!.bloomSpeed = 5.0
        return overlay!
    }()
/// 轨迹动画选项
    lazy var traceOverlayOption: BMKTraceOverlayOption = {
        let option = BMKTraceOverlayOption()
        option.duration = 8.0
        option.easingCurve = .linear
        option.trackMove = true // 是否跟踪轨迹动画,地图跟随移动
        option.pointMove = true // 是否点动画
        let modelOption = BMKTrace3DModelOption()
        modelOption.scale = 5
        modelOption.modelName = "scenes"
        modelOption.rotateX = 90
        modelOption.rotateY = -90
        modelOption.type = BMK3DModelTypeGLTF
        modelOption.modelYawAxis = BMKTraceOverlay3DModelYawAxis.Y
        modelOption.modelPath = String(format: "%@/Model3D",Bundle.main.bundlePath)
        modelOption.animationIsEnable = true
        modelOption.animationSpeed = 1
        modelOption.animationRepeatCount = 0
        modelOption.animationIndex = 1
        modelOption.modelOption = modelOption
        return option
    }()
2实现代理方法生成对应的view(BMKTraceOverlayView)
Objective-C
Swift
#pragma mark - <BMKMapViewDelegate>
- (__kindof BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id<BMKOverlay>)overlay {

    if ([overlay isKindOfClass:[BMKTraceOverlay class]]) {
        BMKTraceOverlayView *polylineView = [[BMKTraceOverlayView alloc] initWithTraceOverlay:overlay];
        /// 纯色
//        polylineView.strokeColor = [UIColor blueColor];
//        polylineView.fillColor = [UIColor blueColor];
        /// 渐变色颜色
        /// 注意:strokeColors 长度与轨迹点的个数必须保持一致
        polylineView.strokeColors = [_colors copy];
        polylineView.lineWidth = 8.0;
        return polylineView;
    }
    
    return nil;
}

/// - BMKMapViewDelegate
extension BMKTraceOverlayPage: BMKMapViewDelegate {
    
    func mapView(_ mapView: BMKMapView, viewFor overlay: BMKOverlay) -> BMKOverlayView? {
        let traceOverlayView = BMKTraceOverlayView(overlay: overlay)
        /// 纯色
        traceOverlayView?.fillColor = UIColor.blue
        traceOverlayView?.strokeColor = UIColor.blue
        traceOverlayView?.lineWidth = 8
        /// 渐变色颜色
        /// 注意:strokeColors 长度与轨迹点的个数必须保持一致
        traceOverlayView?.strokeColors = colors
        return traceOverlayView
    }
    
}
3运行程序
效果如下:
https://mapopen-pub-iossdk.cdn.bcebos.com/map/v6_5_7/dynamictory_1.MP4
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消