Я создал форму карты Google, которая позволяет пользователям вводить адрес в текстовое поле и геокодировать запись. Затем он помещает маркер на карту. Это прекрасно работает, но я хочу добавить дополнительный addListener, поэтому, когда пользователь нажимает на карту, он добавит еще один контакт, на который они нажимают. По какой-то причине мой 'click' addListener не работает. Как я могу добавить несколько таких слушателей?Добавление нескольких событий addListener в форму карты Google с геокодированием
Я прикрепил мой curent код:
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(40.7,-74.0),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
var marker = new google.maps.Marker({
map: map,
draggable: true
});
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(16);
}
var image = "http://www.google.com/mapfiles/marker_green.png";
marker.setIcon(image);
marker.setPosition(place.geometry.location);
var address = '';
if (place.address_components) {
address = [(place.address_components[0] &&
place.address_components[0].short_name || ''),
(place.address_components[1] &&
place.address_components[1].short_name || ''),
(place.address_components[2] &&
place.address_components[2].short_name || '')
].join(' ');
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
google.maps.event.addListener(map, 'click', function() {
//alert("Hello! I am an alert box!!");
var marker1 = new google.maps.Marker({
map: map,
draggable: true
});
var image = "http://www.google.com/mapfiles/marker_green.png";
marker1.setIcon(image);
marker1.setPosition(new google.maps.LatLng(40.7,-74.0));
map.addOverlay(marker1);
});
Спасибо
Спасибо, Брайан! Это отлично работает. Единственная проблема заключается в том, что он добавляет новый маркер, не удаляя старый каждый клик. Как удалить последний маркер при добавлении нового? (Я попробовал просто добавить «marker1.setMap (null) 'но это не позволяет мне добавить новый маркер) – AtomicCharles
Обновлен ответ –
Спасибо, Брайан! – AtomicCharles