【发布时间】:2011-10-18 10:47:30
【问题描述】:
我想在我的用户每次移动一定距离时动态更新地图/加载新的地图叠加层。我该怎么做呢?每次用户移动地图时是否有监听器?我很可能只是测量中心点之间的距离。
谢谢!
【问题讨论】:
标签: android user-interface map android-mapview
我想在我的用户每次移动一定距离时动态更新地图/加载新的地图叠加层。我该怎么做呢?每次用户移动地图时是否有监听器?我很可能只是测量中心点之间的距离。
谢谢!
【问题讨论】:
标签: android user-interface map android-mapview
试试这个来检测地图移动: http://pa.rezendi.com/2010/03/responding-to-zooms-and-pans-in.html
在开始和移动地图后,您应该保存当前的地图中心。正如文章建议的那样,跟踪 ACTION_UP 以确定用户何时完成地图移动。然后,将新地图中心与旧地图中心进行比较。要获取地图中心,请使用 MapView 的 getMapCenter():
编辑:我在这方面做了一些额外的工作,并且有一个完整的应用程序和代码供您欣赏。这篇博客文章解释了一个计时器解决方案,并包含一个到 Github 源的链接: http://bricolsoftconsulting.com/extending-mapview-to-add-a-change-event/
【讨论】:
不幸的是,地图界面不包括任何监听器来监控地图操作(缩放/平移)。您需要设置某种计时器来检查中心/缩放级别,以确定情况是否发生了变化并相应地更新。
【讨论】:
您可以通过覆盖Activity 中的onTouch(...) 方法来做到这一点(这样每次用户平移地图时,您都可以重新计算地图边界)。您需要知道地图的缩放级别和边界等,才能根据地图距离加载这些叠加层。
【讨论】:
ACTION_DOWN和ACTION_UPMotionEvents,可以计算出滑动的距离,从而计算出用户在地图上平移的距离。