У меня возникла проблема с удалением маркера по щелчку мыши. Что ж, все не так просто, как кажется.
function addPoint(event) {
path.insertAt(path.length, event.latLng);
var marker = new google.maps.Marker({
position: event.latLng,
map: map
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', function() {
marker.setMap(null);
markers.splice(i, 1);
}
);
Если бы я использовал этот код, добавляя прослушиватель сразу при создании маркера, удалить его было бы легко, потому что я ссылаюсь на marker.setMap(null);
. Но в моем случае я хочу, чтобы они были созданы, а затем я хочу добавить к ним прослушиватель событий, используя
function usun(){
for (var i=0; i<markersArray.length; i++){
google.maps.event.addListener(marker, 'click', function() {
alert('lol');
});
}
Я подталкиваю каждый маркер к markersArray
, что позволяет мне теперь добавлять событие к каждому из них, но как я могу его удалить? Когда я помещаю marker.setMap(null);
вместо предупреждения, он говорит, что маркер не определен, и я не знаю, как я могу ссылаться на маркер, который я только что щелкнул: S также не могу использовать маркер в качестве глобальной переменной, потому что я получаю ошибку Uncaught TypeError: Cannot read property '__e3_' of undefined
.
РЕДАКТИРОВАТЬ: если я попытаюсь использовать
function usun(){
for (var i=0; i<markersArray.length; i++){
google.maps.event.addListener(markersArray[i], 'click', function() {
markersArray[i].setMap(null);
});
}
} я получаю сообщение об ошибке Uncaught TypeError: Cannot call method 'setMap' of undefined
. Вот почему я был уверен, что мне нужно использовать «маркер».