[英]Google Maps API v3: MarkerWithLabel not showing until zoom
我正在將使用Google Maps API的v2的應用程序轉換為v3。 作為此過程的一部分,我還必須將MarkerManager升級到v3版本。
我有一個奇怪的問題,即在用戶縮放地圖然后它們出現之前,標記不會顯示。
如果再將其縮放回原始縮放級別,標記將保留,因此這不是最小\\最大縮放問題。 firebug \\ javascript控制台中未報告任何錯誤,如果我在添加標記的位置放置一個斷點或console.log,則肯定是在添加標記。
該應用程序相當大,因此我不能將所有源代碼都放在這里,但是添加標記的代碼如下:
console.log("Adding Marker");
markerManager.addMarker(marker, 1, 19);
markerManager.refresh();
創建marker
的代碼與此類似:
var latLng = new google.maps.LatLng(y, x);
var marker = new MarkerWithLabel({
position: latLng,
title: "title",
labelClass: "marker",
labelContent: "Test",
icon: icon,
labelAnchor: new google.maps.Point(26, 32)
});
和icon
只是google.maps.MarkerImage
。 MarkerManager和MarkerWithLabel在此處記錄:
http://google-maps-utility-library-v3.googlecode.com/svn/tags/markermanager/1.0/docs/reference.html
編輯:在創建標記管理器之前,我應該添加以下內容,然后執行以下操作,因此在加載之前,我不會嘗試添加任何內容:
google.maps.event.addListenerOnce(markerManager, 'loaded', function () {
有人對我的錯誤可能在哪里有任何建議嗎?
我已經找到了解決方法,盡管我不確定是否可能對此產生其他影響。 基本上在markermanager.js中,我替換了以下內容(〜第130行)
google.maps.event.addListener(map, 'dragend', function () {
me.onMapMoveEnd_();
});
google.maps.event.addListener(map, 'zoom_changed', function () {
me.onMapMoveEnd_();
});
這樣,標記就會按預期顯示。 我仍然對其他想法持開放態度,因為我不想編輯標記管理器文件,而且我不確定這樣做對性能(或其他)的影響
google.maps.event.addListener(map, 'idle', function () {
me.onMapMoveEnd_();
});
編輯:查看markermanager.js開發人員版本,那里所有3個事件。 因此,如果其他人遇到此問題,則可能值得使用v1.1:
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markermanager/src/markermanager.js
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.