У меня есть список маркеров, которые нужно отобразить на карте, но я хочу его по одному. В первый клик я хочу сделать новый маркер. Затем, когда я нажимаю на другое место, я хочу, чтобы мой маркер просто перешел к новому latLng, чтобы не создавать другой маркер. Вот мой код:Leafletjs: Как получить новый маркер в первый клик, затем обновить latlng маркера во втором клике
function (licon, coord, data) {
var self = jQuery(this);
var map = self.data("map");
var latlng = new L.LatLng(coord[0], coord[1]);
//Create Marker
if (licon) {
var leafIcon = L.icon(licon);
console.log(typeof (marker));
if (typeof (marker) === 'undefined') {
var marker = L.marker(latlng, {
icon: leafIcon,
"markerData": data,
draggable: true
});
} else {
console.log('not undefined');
map.removeLayer(marker);
marker = L.marker(latlng, {
icon: leafIcon,
"markerData": data,
draggable: true
});
}
} else {
var marker = L.marker(latlng, {
"markerData": data,
draggable: true
});
}
marker.addTo(map);
return marker;
}
Если 'typeof (marker === 'undefined')' скорее будет 'typeof marker === 'undefined''? – ghybs
уже отредактировал код –
Я предполагаю, что вы вызываете свою функцию при каждом нажатии на карту? В этом случае ваш 'var marker' должен, вероятно, выходить за пределы этой функции, чтобы вы могли получить его при следующем вызове и проверить, является ли' undefined' или нет. Вы также можете быть заинтересованы в ['marker.setLatLng()'] (http://leafletjs.com/reference.html#marker-setlatlng), а не удалять маркер и добавлять новый. – ghybs