1

我正在將使用v2谷歌地圖API的應用程序轉換爲v3。作爲這個的一部分,我不得不將MarkerManager升級到v3版本。Google Maps API v3:MarkerWithLabel不會顯示,直到變焦

我有點奇怪的問題,標記不顯示,直到用戶縮放地圖,然後他們出現。

如果我放大回到原始縮放級別,標記將保留,因此它不是最小\最大縮放問題。在firebug \ javascript控制檯中沒有報告錯誤,如果我在添加標記的位置放置斷點或console.log,它肯定會被添加。

的應用是相當大的,所以我不能在這裏把所有的來源,但其中增加標記的代碼如下:

console.log("Adding Marker"); 
    markerManager.addMarker(marker, 1, 19); 
    markerManager.refresh(); 

而且在其中創建代碼類似於這樣的:

 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

http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.1.7/docs/reference.html

編輯:我要創造它,我有以下之後做什麼用的標記管理器之前補充一點,所以我不嘗試添加任何東西,直到它的加載:

google.maps.event.addListenerOnce(markerManager, 'loaded', function() { 

任何人有任何建議,我的錯誤可能是哪裏?

回答

0

我已經找到了一個解決這個問題的方法,雖然我不確定可能會對此產生什麼樣的後果。基本上在markermanager.js中,我替換了以下內容(〜130行)

google.maps.event.addListener(map, 'dragend', function() { 
    me.onMapMoveEnd_(); 
}); 
google.maps.event.addListener(map, 'zoom_changed', function() { 
    me.onMapMoveEnd_(); 
}); 

與此並且標記按預期方式顯示。我仍然開放給其他的想法,因爲我不想被編輯markermanager文件,我不知道的性能(或其他)這樣做

google.maps.event.addListener(map, 'idle', function() { 
    me.onMapMoveEnd_(); 
}); 

編輯方面的影響:縱觀markermanager .js dev版本,在那裏有所有3個事件。因此,如果有其他人有這個問題,它可能只值得使用v1.1:

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markermanager/src/markermanager.js