2017-01-27 4 views
1

Ich habe eine Funktion, die Polylinie auf Klick-Ereignis neu erstellen wird. es funktioniert, aber die Aktualisierungsschicht hat immer noch die vorherige Polylinie. Nur wenn ich die Karte zoome, ist die vorherige Polylinie verschwunden.Broschüre entfernen vorherige Polylinie

Mein Code.

function buildHotline(response) { 
    //clearMap(); 
    //clear_polyline(); 
    document.getElementById('mapid').innerHTML = "<div id='map' style='width: 100%; height: 100%;'></div>"; 
    //document.getElementById('map').innerHTML = "<div id='mapid' style='width: 100%; height: 100%;'></div>"; 
    var tiles = L.tileLayer('http://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png', { 
    attribution: 'Tiles courtesy of <a href="http://openstreetmap.se/" target="_blank">OpenStreetMap Sweden</a> &mdash; Map data &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'}); 


    var map = new L.map('map', { 
     layers: [tiles], 
     scrollWheelZoom: true, 
     dragging: true, 
     tap: false 
    }); 


    var hotlineLayer = L.hotline(response, { 
     min: 0, 
     max: 120, 
     palette: { 
      0.0: '#3ebcef', 
      0.5: '#78b3d3', 
      1.0: '#000203' 
     }, 
     weight: 5, 
     outlineColor: '#000203', 
     outlineWidth: 1 
    }); 



    //clear first 
    clear_polyline(); 

    bounds = hotlineLayer.getBounds(); 
    map.fitBounds(bounds); 



    hotlineLayer.addTo(map); 


    function clear_polyline() { 
     try { 
      // statements 
      setTimeout(function(){ map.invalidateSize()}, 400); 
      //alert("erase line"); 
      map.removeLayer(hotlineLayer); 

     } catch(e) { 
      // statements 
      console.log(e); 
     } 

    } 

} 

wo muss ich zu den clear_polyline legte es zunächst zu klären, bevor die neue Polylinie erstellt wird. Dank

Antwort

0

Setzen Sie den Verweis auf hotlineLayeraußerhalb den Umfang der buildHotline() Funktion, so dass mehrere Durchläufe dieser Funktion auf der gleichen Instanz von hotlineLayer beziehen.

Überprüfen Sie dann, ob es undefiniert ist, entfernen Sie es, wenn dies nicht der Fall ist, und weisen Sie es der neu erstellten Instanz zu.

d.h .:

var thing; 

function refreshThing() { 
    if (thing) { remove(thing); } 
    thing = newThing(); 
} 

Siehe auch How to remove L.rectangle(boxes[i]), wie die Lösung ziemlich ähnlich ist.

Verwandte Themen