簡體   English   中英

Google Maps API v3:MarkerWithLabel在縮放之前不會顯示

[英]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

http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.1.7/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM