2011-12-05 7 views
1

私はGoogle Maps API v3を使用しています。マーカードラッグ終了機能に基づいてレンダリングされた指示を実装しました。しかし、マーカーを再びドラッグすると、元の方向のセットは削除されません。Googleマップマーカードラッグ終了方向 - 以前のルートをクリアする

マップは、ジオコーディング要求とソースのオートコンプリートテキストボックスに基づいて生成され、宛先は静的です。これはすべて正常に動作します。私はAPIのドキュメントを読んで、それは.setMap(null);私は地図を再生成していないので、私はこれが正しいと信じています。方向のレンダリングのコードは次のとおりです:

google.maps.event.addListener(markersrc, 'dragend', function() { 
    geocoder.geocode({ 'latLng': markersrc.getPosition() }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      var request = { 
       origin: markersrc.getPosition(), 
       destination: markerdst.getPosition(), 
       travelMode: google.maps.DirectionsTravelMode.DRIVING 
      }; 
      var directionsDisplay = new google.maps.DirectionsRenderer(); 
      var directionsService = new google.maps.DirectionsService(); 
      directionsDisplay.suppressMarkers = true; 
      directionsDisplay.setMap(map); 
      directionsDisplay.setPanel(document.getElementById("directions_panel")); 
      directionsService.route(request, function (response, status) { 
       if (status == google.maps.DirectionsStatus.OK) { 
        directionsDisplay.setDirections(response); 
       } 
      }); 
     } 
    }); 
}); 

どのように私は元の方向をクリアすることができますか考えている?

答えて

1

マーカーをドラッグするたびに、DirectionsDisplayとDirectionsServiceが再作成されるようです。代わりに、それらをグローバル変数として作成する必要があると思います。グローバル変数は、dragendイベントリスナーによってのみ更新されます。

+0

ありがとうございました。それを修正する正しい方法でした! –

関連する問題