Я использую MarkerClusterer. Когда у меня есть два или более маркера в одном и том же месте, API отображает только 1 маркер - верхний. Но каким-то образом я хочу показать все маркеры, поскольку каждый из них откроет отличное всплывающее окно. Я искал несколько решений, но ни один из них не работает У кого-то была аналогичная проблема, и он согласился бы на решение?
Более одного маркера в одном месте - MarkerClusterer
Ответ 1
Наконец, он работал. Это для всех тех, кто еще не нашел решения. Ниже кода добавляется смещение маркеров в том же месте:
В вашей функции createMarker
добавьте этот код:
//get array of markers currently in cluster
var allMarkers = namespace.mapParams.mapMarkersArray;
//final position for marker, could be updated if another marker already exists in same position
var finalLatLng = latlng;
//check to see if any of the existing markers match the latlng of the new marker
if (allMarkers.length != 0) {
for (i=0; i < allMarkers.length; i++) {
var existingMarker = allMarkers[i];
var pos = existingMarker.getPosition();
//if a marker already exists in the same position as this marker
if (latlng.equals(pos)) {
//update the position of the coincident marker by applying a small multipler to its coordinates
var newLat = latlng.lat() + (Math.random() -.5) / 1500;// * (Math.random() * (max - min) + min);
var newLng = latlng.lng() + (Math.random() -.5) / 1500;// * (Math.random() * (max - min) + min);
finalLatLng = new google.maps.LatLng(newLat,newLng);
}
}
}
Теперь обновите свой объект google.maps.Marker
для каждого маркера с новым значением позиции - finalLatLng
.
var marker = new google.maps.Marker({
map: msf_namespace.mapParams.resultmap,
position: finalLatLng,
title: name,
icon: markericon
});
//add each generated marker to mapMarkersArray
namespace.mapParams.mapMarkersArray.push(marker);