更新时间:2020年06月23日
本章节将对地图监听事件做介绍,地图事件监听(地图状态改变、各种手势、截屏)等。
地图事件监听
SDK定义了各种地图相关事件的监听,提供相应的事件监听方法,包括地图状态的改变、手势事件、地图渲染、地图截屏事件等。如下所示:
设置地图加载完成回调:
/// 地图加载回调 myMapController?.setMapDidLoadCallback(callback: () { });
设置地图渲染完成回调:
/// 地图渲染完成回调 myMapController?.setMapDidFinishedRenderCallback(callback: (bool success) { });
设置地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)回调接口:
/// 地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 myMapController?.setMapOnDrawMapFrameCallback(callback: (BMFMapStatus mapStatus) { });
设置地图区域即将改变时会调用此接口:
/// 地图区域即将改变时会调用此接口 /// mapStatus 地图状态信息 myMapController?.setMapRegionWillChangeCallback(callback: (BMFMapStatus mapStatus) { });
设置地图区域改变完成后会调用接口:
/// 地图区域改变完成后会调用此接口 /// mapStatus 地图状态信息 myMapController?.setMapRegionDidChangeCallback( callback: (BMFMapStatus mapStatus) { });
设置地图区域即将改变时会调用接口,带有reason返回值:
/// 地图区域即将改变时会调用此接口 /// mapStatus 地图状态信息 /// regionChangeReason 地图改变原因 myMapController?.setMapRegionWillChangeWithReasonCallback(callback: (BMFMapStatus mapStatus, BMFRegionChangeReason regionChangeReason) { });
设置地图区域改变完成后会调用接口,带有reason返回值:
/// 地图区域改变完成后会调用此接口 /// mapStatus 地图状态信息 /// regionChangeReason 地图改变原因 myMapController?.setMapRegionDidChangeWithReasonCallback(callback: (BMFMapStatus mapStatus, BMFRegionChangeReason regionChangeReason) { });
设置点击底图空白处会回调接口:
/// 点中底图空白处会回调此接口 /// coordinate 经纬度 myMapController?.setMapOnClickedMapBlankCallback( callback: (BMFCoordinate coordinate) { });
设置点中底图标注后会回调接口:
/// 点中底图标注后会回调此接口 myMapController?.setMapOnClickedMapPoiCallback( callback: (BMFMapPoi mapPoi) { });
双击地图时会回调此接口:
/// 双击地图时会回调此接口 /// coordinate 经纬度 myMapController?.setMapOnDoubleClickCallback(callback: (BMFCoordinate coordinate) { });
设置长按地图时会回调接口:
/// 长按地图时会回调此接口 myMapController?.setMapOnLongClickCallback(callback: (BMFCoordinate coordinate) { });
3DTouch 点击地图时会回调此接口:
注:目前ios支持,Android不支持
/// 3DTouch 按地图时会回调此接口 ///(仅在支持3D Touch,且fouchTouchEnabled属性为true时,会回调此接口) /// coordinate 触摸点的经纬度 /// force 触摸该点的力度(参考UITouch的force属性) /// maximumPossibleForce 当前输入机制下的最大可能力度(参考UITouch的maximumPossibleForce属性) myMapController?.setMapOnForceTouchCallback(callback:(BMFCoordinate coordinate, double force, double maximumPossibleForce) { });
设置地图状态改变完成后回调接口:
/// 设置地图状态改变完成后回调接口 myMapController?.setMapStatusDidChangedCallback(callback: () { });
设置地图View进入/移出室内地图回调接口:
/// 地图View进入/移出室内图会调用此方法 /// flag YES:进入室内图,false:移出室内图 /// baseIndoorMapInfo 室内图信息 myMapController?.setMapInOrOutBaseIndoorMapCallback( callback: (bool flag, BMFBaseIndoorMapInfo baseIndoorMapInfo) { });
地图截屏
地图截屏接口:
void takeSnapshort() async { Uint8List image = await myMapController?.takeSnapshot(); }