2017-07-24 7 views
1

Ich benutze renderDirections und requestDirections-Methoden, um mehrere in einer Schleife aufgerufene Routen zu erstellen, jetzt möchte ich sie vor dem Aufruf dieser Schleife löschen, da selbst wenn keine Routendaten vorhanden sind, diese der früheren Daten angezeigt werden. PS: Die Methoden werden nicht aufgerufen, wenn keine Daten gibt, aber es zeigt vorherige RoutenWie entferne ich alle Routen in Google Map?

Unten ist mein Beispielcode Routen zu setzen:

function renderDirections(result, Driver) { 

     var directionsRenderer = new google.maps.DirectionsRenderer({ suppressMarkers: false,preserveViewport: true, polylineOptions: { strokeColor: colors[cur] } }); 
     directionsRenderer.setMap(map); 
     directionsRenderer.setDirections(result); 
     var leg = result.routes[0].legs[0]; 
     makeMarker(leg.start_location, Driver); 
     makeMarker(leg.end_location, Driver); 
     cur++; 
    } 

Funktion requestDirections (Start, Ende, wps, Fahrer) {

 var directionsService = new google.maps.DirectionsService; 
     directionsService.route(
      { 
       origin: start, 
       destination: end, 
       waypoints: wps, 
       travelMode: google.maps.DirectionsTravelMode.DRIVING 
      }, function (result) { 
       renderDirections(result, Driver); 
      }); 
    } 
+0

directionsRenderer.setMap (null) zu schaffen; –

+0

funktioniert nicht beim Löschen alter Routen – ankita25

+0

Sie erstellen jedes Mal eine neue Renderer-Instanz, wenn Sie 'renderDirections()' aufrufen. Setzen Sie die Initialisierung des Renderers auf globaler Ebene und behalten Sie nur eine Instanz von 'google.maps.DirectionsRenderer()'. In diesem Fall 'directionsRenderer.setMap (null); 'sollte funktionieren. – xomena

Antwort

0

Sie können einfach Ihre Routen in einem Array setzen, wenn Sie es initialisieren, wie folgt aus: routes.push (myRoute) und nächsten Verwendung der Methode route.setMap() mit dem Argument null sie von der Karte zu verschwinden . Sie können sie auch entfernen, wenn Sie das Array wie folgt zurücksetzen: routes = []; oder routes[2]=null für ein Element. Ich gebe Ihnen einige Methoden, um alle Routen zu entfernen oder einfach zu verschwinden.

// Sets the map on all routes in the array. 
function setMapOnAll(map) { 
    for (var i = 0; i < markers.length; i++) { 
     routes[i].setMap(map); 
    } 
} 

// Removes the routes from the map, but keeps them in the array. 
function clearMarkers() { 
    setMapOnAll(null); 
} 

// Shows any routes currently in the array. 
function showMarkers() { 
    setMapOnAll(map); 
} 

// Deletes all routes in the array by removing references to them. 
function clearAllMarkers() { 
    clearMarkers(); 
    routes = []; 
} 
+0

okay .. nach der Idee, die du gabst, habe ich eine Array Route [] gemacht und sie die Lat Long Punkte von mehreren Routen halten. Wenn die Treiberschleife nach dem eingestellten Zeitintervall erneut ausgeführt wird, habe ich auf route [] geloopt, um Routenpfade von alten Daten zu löschen, habe aber einen Fehler erhalten: Eigenschaft 'setMap' von undefined .. PLz guide kann nicht gelesen werden – ankita25

0

Dieser arbeitete für mich: erklärt directionsRender [] global und einen Zähler Schleife auf alten Routen um es zu löschen `

function renderDirections(result, Driver) { 
     directionsRenderer[cnt] = new google.maps.DirectionsRenderer(); 
     directionsRenderer[cnt].setMap(map); 
     directionsRenderer[cnt].setDirections(result); 
     cnt++; 
    }` 
     function clearRoutes() { 
     for (var i = 0; i < cnt; i++) { 
      directionsRenderer[i].setMap(null); 
     } 
    } 
Verwandte Themen