2012-04-04 121 views
2

我有一个棘手的问题......我使用谷歌地图静态API来创建一个带有标记的地图的图像。我正在努力做的是计算适当的缩放级别,给定我想要显示的两个标记的位置。如何计算适当的谷歌地图缩放级别

我有纬度A,经度A,纬度B,经度B和中心点(简单)。有谁知道解决缩放级别的公式?

谢谢!

回答

2

即使你使用的是静态的地图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)); 
+0

在技术上,我不使用地图api,我试图做的是获取地图图像嵌入到电子邮件中。没有办法做到这一点(数学)没有使用GMap调用? – TomBomb 2012-04-04 02:33:04

+0

你使用任何类型的编程语言来计算这个,或者你只是试图从某个地方复制/粘贴链接? – javram 2012-04-04 02:57:53

+0

从技术上讲,这是在PHP中,但我试图得到一个适当的静态谷歌地图链接,如: “http://maps.googleapis.com/maps/api/staticmap?center=centerLat,centerLng&zoom=zoomLevel&size=widthxheight&maptype =路标&标记=颜色:绿%7Clabel:P%7CLat1,Long1&标记=颜色:红%7Clabel:d%7CLat2,Long2&传感器=假“; – TomBomb 2012-04-04 03:12:40

3

我花了3个静态地图的水平11,12和13,并使用Google地图的“地图实验室”功能,按住相应的最小/最大纬度/经度标记处的Shift键。然后,我编写了一个Perl程序来计算纬度/经度范围,预期值(通过检查数据预测的公式)和三角洲(即abs(预期 - 范围)),这应该接近于零。 有一次,我相信自己,我已经得到了尽可能靠近我可以,这里是我的结果:

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是缩放级别。

+0

好的回答golux。 – 2012-09-16 18:27:33

相关问题