更新时间:2020-06-23
地图事件监听
百度地图支持地图状态,手势交互,和地图覆盖物交互等事件的监听,并提供了相应的事件监听方法。
地图状态事件监听:
/** *地图状态改变完成后会调用此接口 *@param mapView 地图View */ - (void)mapStatusDidChanged:(BMKMapView *)mapView; /** *地图进入/移出室内图会调用此接口 *@param mapView 地图View *@param flag YES:进入室内图; NO:移出室内图 *@param info 室内图信息 */ - (void)mapview:(BMKMapView *)mapView baseIndoorMapWithIn:(BOOL)flag baseIndoorMapInfo:(BMKBaseIndoorMapInfo *)info; /** *地图初始化完毕时会调用此接口 *@param mapView 地图View */ - (void)mapViewDidFinishLoading:(BMKMapView *)mapView; /** *地图渲染完毕后会调用此接口 *@param mapView 地图View */ - (void)mapViewDidFinishRendering:(BMKMapView *)mapView; /** *地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 *@param mapView 地图View *@param status 此时地图的状态 */ - (void)mapView:(BMKMapView *)mapView onDrawMapFrame:(BMKMapStatus*)status; /** *地图区域即将改变时会调用此接口 *@param mapView 地图View *@param animated 是否动画 */ - (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated; /** *地图区域即将改变时会调用此接口 *@param mapView 地图View *@param animated 是否动画 *@param reason 地区区域改变的原因 */ - (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated reason:(BMKRegionChangeReason)reason; /** *地图区域改变完成后会调用此接口 *@param mapView 地图View *@param animated 是否动画 */ - (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated; /** *地图区域改变完成后会调用此接口 *@param mapView 地图View *@param animated 是否动画 *@param reason 地区区域改变的原因 */ - (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated reason:(BMKRegionChangeReason)reason;
地图手势交互事件监听:
/** *点中底图空白处会回调此接口 *@param mapView 地图View *@param coordinate 空白处坐标点的经纬度 */ - (void)mapView:(BMKMapView *)mapView onClickedMapBlank:(CLLocationCoordinate2D)coordinate; /** *双击地图时会回调此接口 *@param mapView 地图View *@param coordinate 返回双击处坐标点的经纬度 */ - (void)mapview:(BMKMapView *)mapView onDoubleClick:(CLLocationCoordinate2D)coordinate; /** *长按地图时会回调此接口 *@param mapView 地图View *@param coordinate 返回长按事件坐标点的经纬度 */ - (void)mapview:(BMKMapView *)mapView onLongClick:(CLLocationCoordinate2D)coordinate; /** *3DTouch 按地图时会回调此接口(仅在支持3D Touch,且fouchTouchEnabled属性为YES时,会回调此接口) *@param mapView 地图View *@param coordinate 触摸点的经纬度 *@param force 触摸该点的力度(参考UITouch的force属性) *@param maximumPossibleForce 当前输入机制下的最大可能力度(参考UITouch的maximumPossibleForce属性) */ - (void)mapview:(BMKMapView *)mapView onForceTouch:(CLLocationCoordinate2D)coordinate force:(CGFloat)force maximumPossibleForce:(CGFloat)maximumPossibleForce;
地图覆盖物交互事件监听:
/** *点中底图标注后会回调此接口 *@param mapView 地图View *@param mapPoi 标注点信息 */ - (void)mapView:(BMKMapView *)mapView onClickedMapPoi:(BMKMapPoi*)mapPoi; /** *根据anntation生成对应的View *@param mapView 地图View *@param annotation 指定的标注 *@return 生成的标注View */ - (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation; /** *当mapView新添加annotation views时,调用此接口 *@param mapView 地图View *@param views 新添加的annotation views */ - (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views; /** *当选中一个annotation views时,调用此接口 *@param mapView 地图View *@param view 选中的annotation views */ - (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view; /** *当取消选中一个annotation views时,调用此接口 *@param mapView 地图View *@param view 取消选中的annotation views */ - (void)mapView:(BMKMapView *)mapView didDeselectAnnotationView:(BMKAnnotationView *)view; /** *拖动annotation view时,若view的状态发生变化,会调用此函数。ios3.2以后支持 *@param mapView 地图View *@param view annotation view *@param newState 新状态 *@param oldState 旧状态 */ - (void)mapView:(BMKMapView *)mapView annotationView:(BMKAnnotationView *)view didChangeDragState:(BMKAnnotationViewDragState)newState fromOldState:(BMKAnnotationViewDragState)oldState; /** *当点击annotation view弹出的泡泡时,调用此接口 *@param mapView 地图View *@param view 泡泡所属的annotation view */ - (void)mapView:(BMKMapView *)mapView annotationViewForBubble:(BMKAnnotationView *)view; /** *根据overlay生成对应的View *@param mapView 地图View *@param overlay 指定的overlay *@return 生成的覆盖物View */ - (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id <BMKOverlay>)overlay; /** *当mapView新添加overlay views时,调用此接口 *@param mapView 地图View *@param overlayViews 新添加的overlay views */ - (void)mapView:(BMKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews; /** *点中覆盖物后会回调此接口,目前只支持点中BMKPolylineView时回调 *@param mapView 地图View *@param overlayView 覆盖物view信息 */ - (void)mapView:(BMKMapView *)mapView onClickedBMKOverlayView:(BMKOverlayView *)overlayView;