好的,所以我正在尝试编写一个代码,该代码根据当前可查看区域返回地图的所有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是纬度和长度值的转换后的分辨率。
答案 0 :(得分: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: Get the the coordinates (Latitude and Longitude) currently displayed on MapView
获取