【问题标题】:How to get minimum/maximum latitude and longitude from a MapView?如何从 MapView 获取最小/最大纬度和经度?
【发布时间】:2013-01-07 03:57:13
【问题描述】:

目前我正在使用以下代码从(Google Maps)MapView 对象中获取最小和最大纬度和经度。

GeoPoint center = map.getMapCenter();
Double minLat = (center.getLatitudeE6() - (map.getLatitudeSpan() / 2)) / 1E6;
Double minLong = (center.getLongitudeE6() - (map.getLongitudeSpan() / 2)) / 1E6;
Double maxLat = (center.getLatitudeE6() + (map.getLatitudeSpan() / 2)) / 1E6;
Double maxLong = (center.getLongitudeE6() + (map.getLongitudeSpan() / 2)) / 1E6;

不幸的是,这并没有给我正确的输出。我目前在 MapView 中的缩放级别为 18,以 (52.9476, -1.1452) 点为中心。上述代码的输出分别给出了值 (52.947632, -181.145156, 52.947632, 178.854844)。显然这里有一个问题,显示的最小纬度在物理上是不可能的,并且纬度都与中心纬度完全相同。我可以确认 MapView 本身正确显示了位置。

谁能解释为什么会这样?在我看到的所有解决这个问题的方法中,这是唯一一个人们似乎有运气但仍然不起作用的方法!

【问题讨论】:

    标签: android google-maps android-mapview android-maps bounding-box


    【解决方案1】:

    我现在自己解决了这个问题。本质上,在 MapView 的 Projection 准备好之前,这些函数将分别返回 0 和 360*1E6 的纬度和经度。因此,所有需要做的就是在 AsyncTask 中对这些值进行检查,直到它们准备好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 2016-11-30
      相关资源
      最近更新 更多