4 回答

TA貢獻(xiàn)1827條經(jīng)驗 獲得超4個贊
我想我會把它放在這里,因為對于那些開始使用谷歌地圖API的人來說它似乎是一個受歡迎的著陸點(diǎn)。在客戶端呈現(xiàn)的多個標(biāo)記可能是許多地圖應(yīng)用程序性能下降的結(jié)果。很難進(jìn)行基準(zhǔn)測試,修復(fù)并且在某些情況下甚至確定存在問題(由于瀏覽器實現(xiàn)差異,客戶端可用的硬件,移動設(shè)備,列表繼續(xù))。
開始解決此問題的最簡單方法是使用標(biāo)記群集解決方案?;舅枷胧菍⒌乩砩舷嗨频奈恢梅纸M到顯示點(diǎn)數(shù)的組中。當(dāng)用戶放大地圖時,這些組會展開以顯示下方的各個標(biāo)記。
也許最簡單的實現(xiàn)是markerclusterer庫?;緦崿F(xiàn)如下(在庫導(dǎo)入之后):
<script type="text/javascript"> function initialize() { var center = new google.maps.LatLng(37.4419, -122.1419); var map = new google.maps.Map(document.getElementById('map'), { zoom: 3, center: center, mapTypeId: google.maps.MapTypeId.ROADMAP }); var markers = []; for (var i = 0; i < 100; i++) { var location = yourData.location[i]; var latLng = new google.maps.LatLng(location.latitude, location.longitude); var marker = new google.maps.Marker({ position: latLng }); markers.push(marker); } var markerCluster = new MarkerClusterer(map, markers); } google.maps.event.addDomListener(window, 'load', initialize);</script>
標(biāo)記而不是直接添加到地圖中的標(biāo)記將添加到數(shù)組中。然后將此數(shù)組傳遞給庫,該庫為您處理復(fù)雜計算并附加到地圖。
這些實現(xiàn)不僅大大提高了客戶端的性能,而且在許多情況下,它們還可以實現(xiàn)更簡單,更簡潔的UI,并且更容易在更大規(guī)模上消化數(shù)據(jù)。
其他實施可從Google獲得。
希望這有助于一些更新的映射細(xì)微差別。
添加回答
舉報