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

效果和源代码见附件

更多相关文章

  1. Android事件传递(分发)机制
  2. Android电话系统之-rild
  3. 初步理解Android(安卓)Fragment
  4. Android应用程序键盘(Keyboard)消息处理机制分析
  5. Android电话系统之-rild
  6. android 事件模型原理2
  7. Android中解析XML
  8. Android(安卓)Studio 4.0 新功能与优化
  9. Android(安卓)ViewGroup中事件触发和传递机制

随机推荐

  1. 如何充分利用小程序?
  2. 通过注解的 springboot+mybatis 多数据
  3. 0331作业
  4. iview的table合并相同的单元格
  5. 经济下行,程序员年底升职加薪指南
  6. 3.19作业
  7. webuploader文件上传到哪里的问题
  8. 新RabbitMQ精讲 提升工程实践能力 培养架
  9. 简单介绍编辑器vscode的安装与配置
  10. 解构赋值与流程控制