Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Maps Polyline - How do I remove it?

So I checked previous questions regarding this, which all relate to V2, which is of no help.

So, I create two markers, save them in an array as markers["to"] and markers["from"]

And then add them with this

function route(){
        for(var key in markers) {
           flightPlanCoordinates.push(markers[key].position);
       }
        flightPath = new google.maps.Polyline({
            path: flightPlanCoordinates,
            strokeColor: "#FF0000",
            strokeOpacity: 1.0,
            strokeWeight: 2
    });
   flightPath.setMap(map);
}

Brilliant. But. Next time I use it (With new markers in the array) it just adds a polyline there without removing the previous one. I seem to have tried everything, removing from the first array, the flightPath, setMap(null) and so forth.

What's the correct way to remove the previous line before drawing a new one?

EDIT: SOLVED Solution

function route(){
    var flightPlanCoordinates = [];
    for(var key in markers) {
        flightPlanCoordinates.push(markers[key].position);
    }
    if(flightPath) {
        flightPath.setPath(flightPlanCoordinates);
    } else {
        flightPath = new google.maps.Polyline({
            path: flightPlanCoordinates,
            strokeColor: "#FF0000",
            strokeOpacity: 1.0,
            strokeWeight: 2
        });
        flightPath.setMap(map);
    }
}

Reason: flightPlanCoordinates needs to be initialized within the scope, this resets the array every time it is used, cleaning it out properly. (Also thanks for the input below to make the code a bit nicer.

like image 436
Mantar Avatar asked Dec 30 '10 18:12

Mantar


1 Answers

Assuming that "mypolyline" is your Polyline object, you can also try:

mypolyline.setPath([]);

This way, you are taking out the coordinates from the Polyline, which in effect will remove it from the map.

like image 157
DemitryT Avatar answered Oct 03 '22 00:10

DemitryT