Google Maps API v3:MarkerWithLabel直到缩放才显示

时间:2012-11-05 21:12:48

标签: javascript google-maps-api-3 google-maps-markers markermanager

我正在将使用谷歌地图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 () {

有人对我的错误可能在哪里有任何建议吗?

1 个答案:

答案 0 :(得分: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