2010-11-24 63 views

回答

1

谷歌地图通过运行在客户端(浏览器内)的JavaScript库使用。在服务器端你无能为力。

但是,您可以查看JavaScript(在客户端)的边界框大小并相应地设置缩放级别。

我很好奇:你在服务器端的谷歌地图做什么?

+0

但是,你怎么做缩放? – elvenbyte 2011-06-21 15:11:32

6

@Peter实际上,您可以在服务器端使用Java进行一些操作。你可以计算出从你的边界框的最小和最大纬度/经度值,然后使用下面的代码:

int zoomLevel; 
double latDiff = latMax - latMin; 
double lngDiff = lngMax - lngMin; 

double maxDiff = (lngDiff > latDiff) ? lngDiff : latDiff; 
if (maxDiff < 360/Math.pow(2, 20)) { 
    zoomLevel = 21; 
} else { 
    zoomLevel = (int) (-1*((Math.log(maxDiff)/Math.log(2)) - (Math.log(360)/Math.log(2)))); 
    if (zoomLevel < 1) 
     zoomLevel = 1; 
} 

这很适合我的Square谷歌地图的320x320像素,与ZOOM_SCALING_FACTOR = 0.3838。这个公式应该适用于任何Google地图。你看到log_2被使用的原因是,每当缩放级别增加1时,Google地图的尺寸​​会加倍。我还处理点彼此几乎一致的边缘情况(zoomLevel = 21),以及整个地球的位置是所需的缩放(zoomLevel = 1)。

做这个服务器端的好处是,你已经释放你的JavaScript引擎做复杂(可能是浪费)的数学,这可能会减慢页面加载和恶化用户体验。

+0

谢谢你干得好。 – Blamkin86 2015-12-08 22:13:38

相关问题