1

目前我正在使用以下代码从(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 本身正确显示了位置。

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

4

1 回答 1

1

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

于 2013-01-26T02:02:21.657 回答