百度地图android sdk拖拽overlay item

使用百度地图的android sdk的ItemizedOverlay可以方便的在地图上添加覆盖物,但是覆盖物是不能拖拽的,只有onTap函数中可以处理点击事件.怎么能实现拖拽呢?
我想到的一个方法是既然MapView也是一个android的View,自然可以监听鼠标事件,可以设置OnTouchListener,捕获最原始的鼠标事件.
ItemizedOverlay有个hitTest方法,可以判断屏幕点击是否点击到了一个覆盖物上,所以可以在OnTouchListener的onTouch方法中,判断鼠标事件的不同,
在MotionEvent.ACTION_DOWN,即鼠标按下时,先判断鼠标是否是在一个覆盖物上进行了点击,如果在覆盖物上点击了,那么当前状态为覆盖物拖拽状态,
MotionEvent.ACTION_UP和MotionEvent.ACTION_MOVE事件时,则如果处于覆盖物拖拽状态,用百度地图将屏幕坐标投影到地理坐标,然后更新覆盖物的位置.

效果和源代码见附件

猜你喜欢

转载自kabike.iteye.com/blog/2017338