Событие клика JavaScript для каких-либо маркеров карт Google?
Мне нужно, чтобы что-то произошло, когда на любой маркер Google Maps нажали. Я использую демо из этой ссылки в качестве отправной точки:
http://gmap3.net/examples/tags.html
ОБНОВЛЕНИЕ - я попробовал следующее:
$.each(markers, function(i, marker){
marker.click(function(){
alert('alert');
});
});
$.each(markers, function(i, marker){
$(marker).click(function(){
alert('alert');
});
});
ОБНОВЛЕНИЕ Я попытался добавить этот средний раздел в существующий код:
$.each(markers, function(i, marker){
marker.setMap( checked ? map : null);
//added code begins
$(marker).click(function(){
alert('dfd');
});
//added code ends
});
3 ответа
Обратите внимание, что OP просит сделать это с помощью библиотеки GMAP3, которая представляет собой библиотеку плагинов jQuery, которая добавляет слой API поверх слоя Google Maps. абсолютно правильно сказать, что Google API должен использовать google.maps.addListener, но я думаю, что OP хочет что-то более близкое к примеру GMAP3 с использованием addMarkers, но прислушивается к событию click. Имея это в виду, я изменил пример из GMAP3, изменил событие mouseenter на событие click и избавился от события mouseleave.
Для тех, кто хочет продолжить игру, я создал jsFddle этого примера.
Вот источник:
<!DOCTYPE HTML>
<html>
<head>
<style>
#map {
width: 400px;
height: 400px;
}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script>
<script type="text/javascript" src="http://gmap3.net/js/gmap3-4.1-min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#map').gmap3({
action: 'init',
options: {
center: [46.578498, 2.457275],
zoom: 5
}
}, {
action: 'addMarkers',
markers: [
{
lat: 48.8620722,
lng: 2.352047,
data: 'Paris !'},
{
lat: 46.59433,
lng: 0.342236,
data: 'Poitiers : great city !'},
{
lat: 42.704931,
lng: 2.894697,
data: 'Perpignan ! <br> GO USAP !'}
],
marker: {
options: {
draggable: false
},
events: {
click: function(marker, event, data) {
var map = $(this).gmap3('get'),
infowindow = $(this).gmap3({
action: 'get',
name: 'infowindow'
});
if (infowindow) {
infowindow.open(map, marker);
infowindow.setContent(data);
} else {
$(this).gmap3({
action: 'addinfowindow',
anchor: marker,
options: {
content: data
}
});
}
}
}
}
});
});
</script>
</head>
<body>
<div id="map" style="width: 400x; height: 400px"></div>
</body>
</html>
google.maps.event.addListener(marker, 'click', function() {
});
ссылка: https://code.google.com/apis/maps/documentation/javascript/events.html
Пример: http://jsfiddle.net/diode/yXQwp/
Ваш вопрос на самом деле не содержит подробностей, но, возможно, вам нужно что-то вроде этого:
$.each(markers, function(i, marker){
marker.click(function(){ //maybe, its $(marker).click
console.log(marker);
});
});
редактировать: это работает для вас...
google.maps.event.addListener(marker, 'click', toggleBounce);
если вы гуглите эту точную строку, вы получите дальнейшие указатели... удачи!