У меня есть Google Map с кучей маркеров.
Я добавляю маркеры на карту один за другим, и мне тоже нужно при необходимости удалять отдельные маркеры один за другим, используя индивидуальные идентификаторы.
В настоящее время у меня есть какой-то ужасный, подробный код, включающий глобальный массив маркеров, идентификатор, добавленный в виде метаданных к каждому маркеру, и неуклюжий метод поиска позиции маркера в массиве, как показано ниже:
var markersArray = [];
function getPositionById(markerId, arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].metadata.id === markerId) {
return i;
}
}
return null;
}
function removeMarker(markerId) {
var marker_position = getPositionById(markerId, markersArray);
if (marker_position !== null) {
markersArray[marker_position].setMap(null);
markersArray.splice(marker_position,1);
}
}
function setMarker(position, markerId) {
removeMarker(markerId);
var temp_marker = new google.maps.Marker({
position: position
});
temp_marker.setMap(map);
temp_marker.metadata = { id: markerId };
markersArray.push(temp_marker);
}
Может ли кто-нибудь предложить еще более изящный способ сделать это?