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

效果和源代码见附件

更多相关文章

  1. 两种android app调用jar的方法
  2. Android的性能优化方法
  3. Android小心有坑之网络状态监听
  4. Android事件传递(分发)机制
  5. Android ViewGroup中事件触发和传递机制
  6. Android 中LayoutInflater(布局加载器)源码篇之createViewFromTag
  7. android 事件模型原理2
  8. Android智能指针SP WP使用方法介绍

随机推荐

  1. Android(安卓)Studio中使用过程中遇到的
  2. 在iOS和Android中使用二维码ZXing库及常
  3. android多activity退出整个程序的一个实
  4. Android(安卓)防止PC端第三方流氓软件强
  5. matix in Android
  6. Android中实现应用程序的国际化与本地化
  7. Android手机开发:android:layout_weight属
  8. Android(安卓)SearchView和ListView的结
  9. 在qemu的beagleboard上运行android
  10. android gen 目录消失