1

現在、次のコードを使用して、(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;

残念ながら、これでは正しい出力が得られません。私は現在、ポイント(52.9476, -1.1452)を中心に、MapView でズーム レベル 18 にいます。上記のコードの出力は、それぞれ値(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 に答える