【发布时间】:2013-09-16 06:54:23
【问题描述】:
我正在使用 ImageMapType 在谷歌地图 (API V3) 上呈现自定义图像。我想在地图上获得某个 Lat/Lng 的 X、Y。这适用于地图的中心(位于 Lat 0 和 Lng 0),但不适用于地图的其他部分,因为 X、Y 值是根据整个世界地图而不是地图的那个部分计算的我的自定义地图所覆盖的世界。
如何在图片上获得正确的 X、Y 值?
我用于查找 X 和 Y 的算法如下:
double latitude = location.getLatitude();
double longitude = location.getLongitude();
int mapWidth = 800;
int mapHeight = 450;
// get x value
double x = (mapWidth*(180+longitude)/360) % mapWidth+(mapWidth/2);
// convert from degrees to radians
double latRad = latitude * java.lang.Math.PI / 180;
// get y value
double mercN = java.lang.Math.log(java.lang.Math.tan((java.lang.Math.PI / 4)+( latRad / 2)));
double y = (mapHeight / 2)-( mapWidth * mercN/(2 * java.lang.Math.PI));
System.out.println("X : " + (x - (mapWidth / 2)) + " Y: " + y);
【问题讨论】:
-
你能发布你的 println 函数的结果吗?输出是什么?
-
该函数输出图像中心的正确值...因为它被放置在 Lat/Long 0/0 但图像的左/右边界不准确,因为它考虑了 X = 0 地图上的垂直线所在的位置,而不是图像结束的位置。