1

好的,所以我正在尝试编写一个代码,该代码根据当前可查看区域返回地图的所有 4 个角位置的值。例如,用户通过他的设备访问谷歌地图,他专注于特定区域并点击一个按钮并返回所有四个角的位置(纬度和经度)。

为此,我有中心坐标,现在我想要当前可视区域的跨度并获得左上角和右下角坐标。为此我使用,

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 分钟在 google 上搜索,所以我不知道我为什么要给你这个……学习研究是成为开发人员最重要的部分。

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 回答