[Недавно отредактировано]
Самый простой способ решения этой проблемы - взломать исходный код jquery.gomap-1.3.2.js
, как показано ниже:
добавить свойство markerCreated для переменной myOptions в функции init
До
var myOptions = {
....
scrollwheel: opts.scrollwheel,
zoom: opts.zoom
};
* После 1019 *
var myOptions = {
....
scrollwheel: opts.scrollwheel,
zoom: opts.zoom,
markerCreated: opts.markerCreated //patched here
};
Изменение и добавление метода в функцию createMarker:
До
createMarker: function(marker) {
....
options.position = marker.position ? marker.position : new google.maps.LatLng(marker.latitude, marker.longitude);
var cmarker = new google.maps.Marker(options);
if (marker.html) {
....
},
* После 1035 *
createMarker: function(marker) {
....
options.position = marker.position ? marker.position : new google.maps.LatLng(marker.latitude, marker.longitude);
var goMap = this; //patched here
var cmarker = new google.maps.Marker(options);
if(goMap.opts.markerCreated) goMap.opts.markerCreated(cmarker); //patched here
if (marker.html) {
....
},
А потом в вашем собственном коде измениться с:
$('#world-map').goMap(
{
markers: mapMarkers,
zoom: 2,
icon: 'http://localhost/eproj/white-marker.png',
streetViewControl: true,
});
до:
$(function() {
var markerclusterer;
var markers = [];
var mapMarkers = [{"id":"9073a1977c8d5d6d7eb1666d03af4a66","address":"3 Essex St, Jersey City, Hudson, United States"},
{"id":"f63f77a0b2d0986f1f0e94bde07ff8ef","address":"96 Vesey St, New York, New York, United States"},
{"id":"57d5cb180425670f3e9c7b6e62fb88ac","address":"38 E Broadway, Manhattan, New York, United States"},
{"id":"bb464b47ca54a23edc3dee4a5f4299ad","address":"322 Tait Ave, Sanger, California, United States"},
{"id":"980f9d1e9e466d988f4851117a268e25","address":"1495 Morton Ave, Parsons, Kansas, United States"},
{"id":"389888acd972d01783547837841d5294","address":"160 N Washington St, Clinton, Missouri, United States"}
];
$("#map").goMap({
markerCreated: function(marker) {
markers.push(marker);
//updated solution for slow MarkerClusterer loading
if(markers.length == mapMarkers.length) {
new MarkerClusterer($.goMap.map, markers);
}
//prev solution
//if(!markerclusterer) markerclusterer = new MarkerClusterer($.goMap.map, markers);
//markerclusterer.addMarker(marker);
},
markers: mapMarkers
});
});
Снять $.goMap.ready
деталь
Пожалуйста, дайте мне сейчас, если этот хак работает / нет
Спасибо
[Изменено] * * тысяча пятьдесят-одна
Я думаю, это потому, что когда создается MarkerCluster, он не передается с соответствующим параметром объекта маркеров.
Это потому, что ваша переменная mapMarkers должна быть геокодирована в первую очередь перед созданием объекта маркера, в то время как в вашем коде вы заставляете создать MarkerCluster до того, как маркеры будут геокодированы по вертикали (вернуть объект маркера со свойствами позиции)
Поверьте мне, когда вы подставляете переменную mapMarkers для объектов маркера (я имею в виду уже известные позиции), тогда вы можете видеть отображение кластера правильно
попробуйте это:
[{
latitude: 40.713094,
longitude: -74.033904,
id: 'test1',
title: 'marker title 1'
},{
latitude: 40.712638,
longitude: -74.03429,
id: 'test2',
title: 'marker title 2'
}]
[OLD]
Может быть, это поможет:
goMap Markercluster Soluton
Извините, я не могу написать более простое решение, чем это;)
Подсказка: попробуйте посмотреть страницу источника