1

さて、現在の表示可能領域に応じて、マップの4つのコーナー位置すべての値を返すコードを作成しようとしています。たとえば、ユーザーは自分のデバイスを介してGoogleマップにアクセスし、特定の領域に焦点を合わせてボタンを押すと、四隅すべての位置(緯度と経度)に戻ります。

このために、中心座標があり、現在の表示可能領域のスパンが必要で、左上隅と右下隅の座標を取得します。このために私は使用しました、

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x; // returns 480
int height = size.y; // returns 800

次に、それらを緯度と経度の値に変換して、次のような簡単な計算を使用できるようにします。

topLeftLat= centerLat + lat/2;
topLeftLon= centerLon - lng/2;
bottomRightLat= centerLat - lat/2;
bottomRightLon = CenterLon + lng/2;

これは私に角の座標を与えるでしょう。latとlngは、緯度と経度の値で変換されたシーンの解像度です。

4

1 に答える 1

2

これはグーグルで5分検索したので、なぜ私があなたにこれを与えるのか分かりません...研究を学ぶことは開発者であることの最大の部分です。

GeoPoint mapCenter = myMap.getMapCenter();

   float centerLatitude = (float)(mapCenter.getLatitudeE6())/1000000;
   float centerLongitude = (float)(mapCenter.getLongitudeE6())/1000000;

   float latitudeSpan = (float)(myMap.getLatitudeSpan())/1000000;
   float longitudeSpan = (float)(myMap.getLongitudeSpan()/1000000);

   GeoPoint mapTopLeft = myMap.getProjection().fromPixels(0, 0);
   float topLatitude = (float)(mapTopLeft.getLatitudeE6())/1000000;
   float leftLongitude = (float)(mapTopLeft.getLongitudeE6())/1000000;

   GeoPoint mapBottomRight
   = myMap.getProjection().fromPixels(myMap.getWidth(), myMap.getHeight());
   float bottomLatitude = (float)(mapBottomRight.getLatitudeE6())/1000000;
   float rightLongitude = (float)(mapBottomRight.getLongitudeE6())/1000000;

String info =
     "Center: " + centerLatitude + "/" + centerLongitude + "\n"
     + "Top Left: " + topLatitude + "/" + leftLongitude + "\n"
     + "Bottom Right: " + bottomLatitude + "/" + rightLongitude + "\n"
     + "latitudeSpan: " + latitudeSpan + "\n"
     + "longitudeSpan: " + longitudeSpan + "\n";

   Toast.makeText(AndroidMapActivity.this,
     info,
     Toast.LENGTH_LONG).show();
  }};

完全なチュートリアルはAndroid-erで入手できます:MapViewに現在表示されている座標(緯度と経度)を取得します

于 2012-07-06T17:25:59.533 に答える