1

Google マップ API を使用してマーカー マネージャーとマップラベルを組み合わせると問題が発生します。

ラベルをマーカーのマップにバインドして配置すると、すべてが期待どおりに機能します。マーカーを移動するとラベルが移動し、マップからマーカーを削除するとラベルも削除されます。この問題は、マーカーをマーカー マネージャーに追加すると発生します。すべてのバインディングが壊れているように見えるため、ラベルはマーカーと一緒に移動しなくなり、マーカーが削除された後もラベルはマップ上に残ります。

問題を示すJSフィドルは次のとおりです:http://jsfiddle.net/d6Su5/

最初のマーカー (マネージャーにはありません) はラベルと共に移動できますが、2 番目のマーカーはラベルを残します。

コード:

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 に答える