【问题标题】:How to detect Google MapView movement in Android?如何检测 Android 中的 Google MapView 移动?
【发布时间】:2011-10-18 10:47:30
【问题描述】:

我想在我的用户每次移动一定距离时动态更新地图/加载新的地图叠加层。我该怎么做呢?每次用户移动地图时是否有监听器?我很可能只是测量中心点之间的距离。

谢谢!

【问题讨论】:

    标签: android user-interface map android-mapview


    【解决方案1】:

    试试这个来检测地图移动: http://pa.rezendi.com/2010/03/responding-to-zooms-and-pans-in.html

    在开始和移动地图后,您应该保存当前的地图中心。正如文章建议的那样,跟踪 ACTION_UP 以确定用户何时完成地图移动。然后,将新地图中心与旧地图中心进行比较。要获取地图中心,请使用 MapView 的 getMapCenter():

    http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html#getMapCenter()

    编辑:我在这方面做了一些额外的工作,并且有一个完整的应用程序和代码供您欣赏。这篇博客文章解释了一个计时器解决方案,并包含一个到 Github 源的链接: http://bricolsoftconsulting.com/extending-mapview-to-add-a-change-event/

    【讨论】:

      【解决方案2】:

      不幸的是,地图界面不包括任何监听器来监控地图操作(缩放/平移)。您需要设置某种计时器来检查中心/缩放级别,以确定情况是否发生了变化并相应地更新。

      【讨论】:

        【解决方案3】:

        您可以通过覆盖Activity 中的onTouch(...) 方法来做到这一点(这样每次用户平移地图时,您都可以重新计算地图边界)。您需要知道地图的缩放级别和边界等,才能根据地图距离加载这些叠加层。

        【讨论】:

        • 但是如果用户向左滑动它,地图不会移动到用户触摸它的不同地方吗?没有办法确定最终的位置,不是吗?
        • 通过同时捕获ACTION_DOWNACTION_UPMotionEvents,可以计算出滑动的距离,从而计算出用户在地图上平移的距离。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-19
        • 1970-01-01
        • 2018-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多