2016-04-03 4 views
0

Я добавляю маркеры на свою карту из своей базы данных с помощью запроса ajax. Это для функции отчетности, поэтому я запрашиваю свою базу данных на основе значений даты. Затем результат добавляет маркеры на карту и добавляет полилинию между маркерами.Как очистить все на карте

Как очистить всю карту всех маркеров и полилиний до запуска функции? Это мой код:

JQuery

var map = L.map('map').setView([-49.7770641, 45.660275],7); 
var markerArray = []; 
var latlngArray = []; 

$(document).ready(function() { 
    L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
     maxZoom: 20, 
    }).addTo(map); 
    getvehicles(); 
    var polyline = L.polyline(markerArray, {color: 'red'}).addTo(map); 
}); 

Функция, которая получает маркеры:

function getlocationsreport(){ 

    var deviceid = $("#selectid").val(); 
    var start = $("#start").val(); 
    var end = $("#end").val(); 
     $.ajax({ 
      type: "POST", 
      url: "functionhandlers/getlocations.php", 
      data: {deviceid:deviceid,start:start,end:end}, 
      dataType: 'json', 
      cache: false, 
     }) 
     .success(function(response) { 

      $('input').removeClass('error').next('.errormessage').html(''); 
      if(!response.errors && response.result) {        
       $.each(response.result, function(index, value) { 
        var latlng = L.latLng(value[7], value[8]); 
        markerArray.push(L.circleMarker(latlng,{radius:2}));   
        latlngArray.push(latlng);     
       }); 
       var group = L.featureGroup(markerArray).addTo(map); 
       var polyline = L.polyline(latlngArray, {color: 'red'}).addTo(map); 
       map.fitBounds(group.getBounds()); 
      } else { 
       $.each(response.errors, function(index, value) { 
        // add error classes 
        $('input[name*='+index+']').addClass('error').after('<div class="errormessage">'+value+'</div>') 
       }); 
      } 
     }); 
} 

ответ

0

Я бы держать группу из петли и использовать clearLayers() метод, чтобы освободить группа.

// once for all 
var group = L.layerGroup().addTo(map); 

// in getlocationsreport 
group.clearLayers(); 

// in marker loop 
group.add(marker); 

// then polyline 
group.add(polyline); 

см http://leafletjs.com/reference.html#layergroup и http://plnkr.co/edit/bYFzdmE5FcYe07HnVKLg?p=preview

+0

Только то, что мне нужно. Большое спасибо :) –

Смежные вопросы