2012-11-11 2 views
1

Я implented markerclustererplus в моей JQuery скрипт так:Как получить нажмите событие из markerclustererplus

$('#map_canvas').gmap({'streetViewControl':false,'mapTypeId': 'terrain'}).bind('init', function(evt, map) { 
    var mcOptions = {gridSize: 30, maxZoom: 15, ignoreHidden:true}; 
    $('#map_canvas').gmap('set', 'MarkerClusterer', new MarkerClusterer(map, $('#map_canvas').gmap('get', 'markers'),mcOptions)); 
}); 
}); 

Все хорошо до сих пор. Возникает вопрос: как я могу поймать событие click, если пользователь нажимает на кластер?

ответ

1

Я нахожу это решение с помощью jquery-ui-gmap.

var clusterer_ = $('#map_canvas').gmap('get', 'MarkerClusterer'); 

google.maps.event.addListener(clusterer_, 'clusterclick', function (cluster) { 
    alert("cluster click event"); 
}); 
1

Я просто была такая же проблема с 'click' событием в дополнение к двум событиям класса Кластерный 'mouseover' и 'mouseout'. В файле markerclusterer.js есть ошибка в последней версии 2.0.15. Для того, чтобы получить его, чтобы запустить 'click' события, изменить markerclusterer.js следующим образом:

Найти эту строку:

google.maps.event.addDomListener(this.div_, "click", function (e) { 

И ниже его изменить:

var mc = cClusterIcon.cluster_.getMarkerClusterer(); 

google.maps.event.trigger(mc, "click", cClusterIcon.cluster_); 
google.maps.event.trigger(mc, "clusterclick", cClusterIcon.cluster_); // deprecated name 

к этому:

var c = cClusterIcon.cluster_; 
var mc = c.getMarkerClusterer(); 

google.maps.event.trigger(c, "click", cClusterIcon.cluster_); 
google.maps.event.trigger(c, "clusterclick", cClusterIcon.cluster_); // deprecated name 

Вот и все!

Не забудьте изменить оба сценария markerclusterplus (markerclusterer.js и markerclusterer_packed.js). После того, как вы сделаете редактирование, вы можете воссоздать версию _packed.js, используя UglifyJS, вырезав ее в этот сайт. Я уже использовал это, и он отлично работает (30,6% от оригинала).

Подробнее о том, как исправить события 'mouseover' и 'mouseout' в этом скрипте, см. В моем другом SO post.

+0

у меня последняя версия 2.1.2 со всеми кода, реализованного в там, но до сих пор не могут поймать '' click' или clusterclick 'event :( – artuska

0

Использование MarkerClustererPlus, просто прикрепить прослушиватель событий к Google Maps addListener метод:

var markerCluster = new MarkerClusterer(map, markers, {options}); 

google.maps.event.addListener(markerCluster, "click", function (c) { 
    console.log('Cluster Object:' + c) 
}); 
Смежные вопросы