3

自分の場所のマーカーをドラッグすると、半径を操作するため、他のマーカーが更新されます。したがって、自分の場所をドラッグすると、半径の外側にあるマーカーが削除され、半径の内側にマーカーが追加されます。これは行いますが、同じマーカーを8回ほど追加し続けます。もちろん、誰もそれを望んでいません。

google.maps.event.addListener(marker, 'drag', function() {
geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        if (results[0]) 
        {
            $('#address').val(results[0].formatted_address);
            ownlat = marker.getPosition().lat();
            ownlng = marker.getPosition().lng();
            clearOverlays(); //deletes old markers
            getevents(); //adds new markers  
        } 
    }   
});             

});

4

1 に答える 1

2

API ドキュメントには、マーカーがドラッグされている間、「ドラッグ」イベントが繰り返し発生すると記載されています。それで、私はそれがgetevents()数回続けて素早く電話をかけていると考えました。

代わりに「dragend」を使用する必要がありますが、ジオコーダーの実行中にマーカーが表示されるまでに遅延が発生する可能性があるという欠点があります。(それが問題になる場合は、geocoder 呼び出しの外に getevents を残してみてください。)

于 2012-05-16T21:32:28.597 に答える