繁体   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