百度地图android sdk拖拽overlay item
16lz
2022-03-25
使用百度地图的android sdk的ItemizedOverlay可以方便的在地图上添加覆盖物,但是覆盖物是不能拖拽的,只有onTap函数中可以处理点击事件.怎么能实现拖拽呢?
我想到的一个方法是既然MapView也是一个android的View,自然可以监听鼠标事件,可以设置OnTouchListener,捕获最原始的鼠标事件.
ItemizedOverlay有个hitTest方法,可以判断屏幕点击是否点击到了一个覆盖物上,所以可以在OnTouchListener的onTouch方法中,判断鼠标事件的不同,
在MotionEvent.ACTION_DOWN,即鼠标按下时,先判断鼠标是否是在一个覆盖物上进行了点击,如果在覆盖物上点击了,那么当前状态为覆盖物拖拽状态,
MotionEvent.ACTION_UP和MotionEvent.ACTION_MOVE事件时,则如果处于覆盖物拖拽状态,用百度地图将屏幕坐标投影到地理坐标,然后更新覆盖物的位置.
效果和源代码见附件
我想到的一个方法是既然MapView也是一个android的View,自然可以监听鼠标事件,可以设置OnTouchListener,捕获最原始的鼠标事件.
ItemizedOverlay有个hitTest方法,可以判断屏幕点击是否点击到了一个覆盖物上,所以可以在OnTouchListener的onTouch方法中,判断鼠标事件的不同,
在MotionEvent.ACTION_DOWN,即鼠标按下时,先判断鼠标是否是在一个覆盖物上进行了点击,如果在覆盖物上点击了,那么当前状态为覆盖物拖拽状态,
MotionEvent.ACTION_UP和MotionEvent.ACTION_MOVE事件时,则如果处于覆盖物拖拽状态,用百度地图将屏幕坐标投影到地理坐标,然后更新覆盖物的位置.
效果和源代码见附件
更多相关文章
- Android事件传递(分发)机制
- Android电话系统之-rild
- 初步理解Android(安卓)Fragment
- Android应用程序键盘(Keyboard)消息处理机制分析
- Android电话系统之-rild
- android 事件模型原理2
- Android中解析XML
- Android(安卓)Studio 4.0 新功能与优化
- Android(安卓)ViewGroup中事件触发和传递机制