0

Я новый пользователь JS и backbone.js.Карты Google/Удалить маркеры в образе backbone.js

У меня есть базовое приложение, которое отправляет запросы на Google Maps api и успешно удаляет контакты на основе поиска в приложении.

Теперь я хотел бы удалить старые маркеры с карты при выполнении поиска для новых маркеров.

Вот моя addMarker функция:

function addmarker(model) { 
    var self = this, 
    marker; 

    _geocode.call(this, model.get('address')) 
    .done(function(location) { 
     marker = new google.maps.Marker({ 
     map: self.map, 
     position: location 
     }); 

    _infowindow.call(self, marker, model); 
    }) 
    .fail(function() { 
     console.log("This address cannot be retrieved from the server"); 
    }); 

}; 

Я хотел бы, чтобы удалить старые маркеры в начале этого вызова функции. Я попытался сохранить маркеры в массиве и вызвать функцию setMap (null) для каждого элемента с функцией clearMarkers в документации API.

https://developers.google.com/maps/documentation/javascript/examples/marker-remove

Это не сработало.

Каков наиболее эффективный способ удаления маркеров в этом контексте?

Дайте мне знать, если у вас есть вопросы по остальной части моего кода.

ответ

1

Вам необходимо создать глобальный массив маркеров и нажать на него каждый маркер. Например:

var markers = []; 

затем в addMarker() функции:

markers.push(marker); // where marker is your google.Maps.Marker(); 

Так что, если вы хотите, чтобы удалить все маркеры:

for (var i=0; i<markers.length; i++) { 

    markers[i].setMap(null); 
} 

Wrap это в функции и/или назвать его первым в ваш addMarker() функция.

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