我有一个棘手的问题...我正在使用谷歌地图静态 API 创建带有标记的地图图像。考虑到我要显示的两个标记的位置,我正在努力做的是计算适当的缩放级别。
我有 latitudeA、longitudeA、latitudeB、longitudeB 和中心点(简单)。有谁知道解决缩放级别的公式?
谢谢!
我有一个棘手的问题...我正在使用谷歌地图静态 API 创建带有标记的地图图像。考虑到我要显示的两个标记的位置,我正在努力做的是计算适当的缩放级别。
我有 latitudeA、longitudeA、latitudeB、longitudeB 和中心点(简单)。有谁知道解决缩放级别的公式?
谢谢!
我在 11、12 和 13 级拍摄了 3 张静态地图,并使用了谷歌地图的“地图实验室”功能,在相应的最小/最大纬度/经度标记处按住 shift 键。然后我编写了一个 Perl 程序来计算纬度/经度范围、预期值(使用我通过检查数据预测的公式)和增量(即 abs(expected - range)),应该接近于零。一旦我确信我已经尽可能接近了,我的结果如下:
Z11: LatRange[0.323999] ExpLat[ 0.324] DeltaLat[ 0.0000000000000019]
Z11: LonRange[0.439999] ExpLon[ 0.44] DeltaLon[ 0.0000000000000023]
Z12: LatRange[0.161999] ExpLat[ 0.162] DeltaLat[ 0.0000000000000010]
Z12: LonRange[0.219999] ExpLon[ 0.22] DeltaLon[ 0.0000000000000011]
Z13: LatRange[0.081000] ExpLat[ 0.081] DeltaLat[ 0.0000000000000031]
Z13: LonRange[0.109999] ExpLon[ 0.11] DeltaLon[ 0.0000000000000006]
我使用的公式是:
ExpLat = 0.162 * (2 ** (12 - Z))
ExpLon = 0.220 * (2 ** (12 - Z))
其中 ExpLat、ExpLon 是预期的纬度和经度范围,Z 是缩放级别。
即使您使用的是静态地图 api,您仍然可以引用常规地图脚本文件,然后进行边界框计算:
map = new GMap2(document.getElementById("map"));
// Define the two corners of the bounding box
var sw = new GLatLng(59.0, 13.12); //any lat,lng pair
var ne = new GLatLng(60.35, 16.90);
var bounds = new GLatLngBounds(sw, ne);
var zoom = map.getBoundsZoomLevel(bounds));