闲下来可以总结总结项目中的一些难点。
下面说下移动标注改变相应的overlay的方法:
1、首先你要自行解决百度地图的搭建。让hello baiduMap正确显示即可。
2、我们在- (void)mapView:(BMKMapView*)mapView onClickedMapBlank:(CLLocationCoordinate2D)coordinate;这个代理方法里获取点击地图生成标注。
3、在- (BMKOverlayView*)mapView:(BMKMapView*)mapView viewForOverlay:(id)overlay;这个代理方法里根据标注来生成view。(我的Demo里只允许设置4个点,生成view)
4、通过- (void)mapView:(BMKMapView*)mapView annotationView:(BMKAnnotationView*)view didChangeDragState:(BMKAnnotationViewDragState)newState
fromOldState:(BMKAnnotationViewDragState)oldState这个代理方法获得移动标注时标注的coordinate。
5、我们通过
/**
*设置标注的坐标,在拖拽时会被调用.
*@param newCoordinate新的坐标值
*/
- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate;
此方法改变已有的标注的coordinate。
6、当我们移动标注时,不停的画overlay,同时删除上一次的overlay。即能达到效果
Demo用法:运行后,在地图上随便点4个点,会生成4个标注,点击按钮会生成相应的view,长按标注,标注会移动,同时view也会跟着移动。


网友评论