2011-04-26 77 views
0

我想顯示位於地圖邊界框內的標記列表。我有一個基本的實現工作,它攔截地圖的「bounds_changed」事件並使用地圖的西南角和東北角的緯度/經度座標向我的服務器發出AJAX請求。這適用於大多數場景,但是我發現,如果用戶過於東/西,此實現會中斷。例如,假設邊界框最初是作爲整個世界開始的(西南角:[-90,-180],西北角:[90,180])。然後,如果用戶向西轉180度,邊界框變爲[-90,-360]/[90,0]。這打破了我的AJAX請求,因爲即使用戶仍然可以看到整個世界,我的數據庫查詢也不會返回經度> 0的任何標記。使用Google Maps API v3在邊界框內顯示標記

處理這個問題的最佳方法是什麼?

回答

2

最簡單的方法是在接收到緯度和經度值時測試緯度和經度值,如果它們大於「真實世界」的緯度和經度,則只需確保在範圍[-90; 90]爲經度和[-180; 180]爲經度。

作爲一個方面說明:如果你想省掉所有的ajax調用,你可以用javascript代替。 google.maps.LatLngBounds類有一個名爲contains的方法,用於檢查給定的latlng是否在邊界內。然後,只需在初始化站點時將所有標記存儲在數組中,然後在用戶平移並將它們的visible屬性設置爲true(如果它們位於當前邊界內)時對它們進行迭代。您可以通過在地圖實例上調用getBounds()來獲取當前邊界。

使用方法map.getBounds()。contains()也可以解決您的問題,而無需擔心用戶是否過度使用,因爲API會爲您處理。