2010-11-24 50 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

相關問題