1

我在使用谷歌地图 API结合标记管理器地图标签时遇到问题。

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

这是一个显示问题的 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);
}); 

我错过了什么?

4

1 回答 1

3

我找到了解决方案。位置应该设置在标签而不是标记上,然后标记应该绑定到标签上,而不是相反。此外,地图是由标记管理器在加载标记时设置的。这是一个更新的 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);
}); 

希望这对将来的人有所帮助!

于 2013-11-26T13:45:13.353 回答