目前,我正在使用以下代码从(Google地图)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本身正确显示了位置。
任何人都可以解释为什么会这样吗?在我所看到的这个问题的所有解决方案中,这是人们似乎唯一运气好的解决方案,但它仍然不起作用!
答案 0 :(得分:1)
我现在自己解决了这个问题。基本上,在MapView的Projection准备就绪之前,这些函数将分别返回纬度和经度的0和360 * 1E6。因此,所有需要完成的工作都是在AsyncTask中对这些值执行检查,直到准备好它们为止。