Sto usando MarkerClusterer. Quando ho due o più marcatori sullo stesso identico punto, l'API mostra solo 1 marcatore - quello superiore. Ma in qualche modo voglio mostrare tutti i marcatori poiché ognuno aprirà un popup distinto. Ho cercato poche soluzioni ma nessuna sembra funzionare Qualcuno ha avuto problemi simili e avrebbe condiviso una soluzione?Più di un marker sullo stesso posto - MarkerClusterer
11
A
risposta
23
Finalmente ha funzionato. Questo è per tutti coloro che non hanno ancora trovato una soluzione. Sotto codice aggiunge compensato ai marcatori sulla stessa posizione:
Nella funzione createMarker
aggiungere questo codice:
//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);
}
}
}
ora aggiornare il vostro oggetto google.maps.Marker
per ogni marcatore con il nuovo valore di posizione - 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);
possibile duplicato [Integrazione Spiderfier JS in markerClusterer V3 esplodere multi-marcatori con esattamente lo stesso lungo/lat] (http://stackoverflow.com/questions/9726920/integrating-spiderfier-js-into-markerclusterer -v3-to-explode-multi-markers-with) – geocodezip
@geocodezip c'è un modo per farlo funzionare senza usare OverlappingMarkerSpiderfier in quanto non soddisfa la necessità. Mostrare entrambi i segnalini con poco spazio solo per sapere che ci saranno due o più segnalini. Grazie. – Grish
Ovviamente c'è. Basta codificarlo per farlo. O modificare i dati di input in modo che non ci siano duplicati. – geocodezip