Google地图标记管理器会破坏标签绑定

时间:2013-11-19 19:54:28

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

我在使用Google地图API合并marker managermaplabel时遇到问题。

当我将标签绑定到标记的地图并且位置时,一切都按预期工作。当我移动标记时,标签会移动,当我从地图中移除标记时,标签也会被移除。将标记添加到标记管理器时会出现问题。似乎所有绑定都被破坏,因此我的标签不再随着标记一起移动,并且标记在移除标记后仍保留在地图上。

这是一个JS小提琴,显示了这个问题:http://jsfiddle.net/d6Su5/

您将看到第一个标记(不在管理器中)可以使用其标签移动,但第二个标记会将标签留在后面。

代码:

var map;
var mgr;
var elevator;
var myOptions = {
    zoom: 6,
    center: new google.maps.LatLng(46.87916, -3.32910),
    mapTypeId: 'terrain'
};
map = new google.maps.Map(document.getElementById('map'), myOptions);
mgr = new MarkerManager(map);   

var marker = new google.maps.Marker({
    title: 'No manager',
    position: new google.maps.LatLng(46.87916, -3.32910),
    map: map,
    draggable: true
});

var mapLabel = new MapLabel({
    text: 'No manager'
});

mapLabel.bindTo('position', marker);
mapLabel.bindTo('map', marker);

var marker2 = new google.maps.Marker({
    title: 'With manager',
    position: new google.maps.LatLng(44.87916, -3.32910),
    map: map,
    draggable: true
});

var mapLabel2 = new MapLabel({
    text: 'With manager'
});

mapLabel2.bindTo('map', marker2);
mapLabel2.bindTo('position', marker2);

google.maps.event.addListenerOnce(map, 'idle', function() {
    mgr.addMarker(marker2, 1);
}); 

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。应该在标签上设置位置而不是标记,然后标记应该绑定到标签,而不是相反。此外,加载标记时,标记管理器会设置地图。这是一个更新的jsfiddle:http://jsfiddle.net/d6Su5/2

var marker2 = new google.maps.Marker({
    title: 'With manager',
    draggable: true
});

var mapLabel2 = new MapLabel({
    position: new google.maps.LatLng(44.87916, -3.32910),
    text: 'With manager'
});

marker2.bindTo('map', mapLabel2);
marker2.bindTo('position', mapLabel2);

google.maps.event.addListenerOnce(map, 'idle', function() {
    mgr.addMarker(marker2, 2);
}); 

希望这有助于将来的某个人!