如何在Flutter HERE SDK中添加Pan Gesture监听器控制导航相机跟踪模式
地图平移时关闭导航相机跟随的实现方案
步骤1:监听地图平移手势
根据你使用的地图SDK选择对应监听方式:
- 主流地图SDK(高德、百度、Google Map、Mapbox等)均自带相机移动回调,直接监听
onCameraMoveStarted类的事件,事件触发原因判断为用户手势拖动时执行后续逻辑即可 - 若所用地图未提供自带回调,给地图组件手动添加平移手势识别器即可,注意配置手势竞争规则,避免和地图原生触摸事件冲突,示例如下(以Flutter为例):
GestureDetector( // 配置命中测试规则,确保能获取到触摸事件 behavior: HitTestBehavior.opaque, onPanStart: (_) { // 监听到用户开始平移地图时触发逻辑 setTracking(false); }, child: 你的地图Widget, )
步骤2:执行关闭追踪逻辑
监听到平移事件后直接调用setTracking(false),即可进入你提供的代码的else分支,将相机追踪模式设为CameraTrackingMode.disabled,此时地图不会再自动跟随用户位置刷新视角,用户可以自由拖动查看其他区域。
可选优化项
- 新增“回到当前位置”悬浮按钮,用户点击后调用
setTracking(true)即可重新开启相机追踪,恢复正常导航视角 - 若产品需要,可在导航偏航重算、到达途经点等场景自动恢复相机追踪,不需要的话保持手动触发即可
内容的提问来源于stack exchange,提问作者Muhammed Emin Aydın
相关产品推荐
相关产品推荐

