2015-05-19 3 views
2

У меня есть слушатель, который обнаружит изменения местоположения объектов в базах данных. Он будет передавать всю информацию об объекте, который изменяется.Как получить все маркеры в Листовке

Я хочу получить все маркеры с текущей карты и найти маркер, на который влияет. После обнаружения обновите местоположение.

Но, я все еще ищу лучшие способы получить все маркеры с карты, а затем я могу обновить местоположение.

var map = L.map('map').setView([37.78541,-122.40787], 13); 
var markers = new L.FeatureGroup(); 
var mapLink = 
    '<a href="http://openstreetmap.org">OpenStreetMap</a>'; 
L.tileLayer(
    'https://{s}.tiles.mapbox.com/v4/examples.map-i87786ca/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoiZ2Vja29iIiwiYSI6IndzVjRGN0kifQ.lToORsjE0lkt-VQ2SXOb-Q', { 
     attribution: '&copy; ' + mapLink + ' Contributors', 
     maxZoom: 18, 
    }).addTo(map); 

var marker = createCircleMarker([44.977368, -93.232659]); 
marker._id = "69"; // Id of the marker 
map.addLayer(marker); 
var socket = io(); 

socket.on('update location', function(obj) { 
    // Get all markers and find markers with attribute obj.name to 
    // update the location to [obj.lat,obj.lon] 

}); 

ответ

3

Использование eachLayer способ на L.map. Как

map.eachLayer(function (layer) { 
    if (layer.options.name === 'XXXXX') { 
     layer.setLatLng([newLat,newLon]) 
    } 
}); 

Документация на http://leafletjs.com/reference-1.2.0.html#map-eachlayer

+2

эта функция будет извлечь только объект листовку вы сейчас видите на экране. а не целые объекты на карте, которые вы в настоящее время не видите. –