我在使用Google地图API合并marker manager和maplabel时遇到问题。
当我将标签绑定到标记的地图并且位置时,一切都按预期工作。当我移动标记时,标签会移动,当我从地图中移除标记时,标签也会被移除。将标记添加到标记管理器时会出现问题。似乎所有绑定都被破坏,因此我的标签不再随着标记一起移动,并且标记在移除标记后仍保留在地图上。
这是一个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);
});
我错过了什么?
答案 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);
});
希望这有助于将来的某个人!