最近项目用到高德地图且要实现移动地图,大头针始终保持在中间的效果,翻了翻Google和百度也没有一个完整的实现教程,那么我就写一个吧。要实现这个功能比较简单,首先我们理一下思路:地图动,大头针不变。那么大头针我们就可以明白应该和地图不是在同一个view层了。
那么我们就在地图上面创建一个View,始终保持在屏幕的中间
图1那么关键的部分来了,我们要把屏幕坐标转换成地图坐标就能实现实时打点了。
图2因为view和touch手势不一样,touch手势可以获取到一点的坐标,我们使用view的话就要用中心点,另外附上手势坐标转换,如图3
图3好了,既然拿到了地图坐标打点就好办了,那么接下来我们要实现移动地图实现更新的效果,我用的是高德地图,高德地图提供了移动结束后的API:- (void)mapView:(MAMapView*)mapView mapDidMoveByUser:(BOOL)wasUserAction;我们就在这个接口里实现我们的更新地理位置和打点操作就可以了,附上更新代码如图4
图4在这里注意一点, 要判断wasUserAction,是否用户的操作,如果不加判断的话就会一直在更新,实现更新打点前记得把上一个点清除。
网友评论