soluzione alternativa che ho usato è quello di visualizzare marcatori con stessa posizione poco un po 'a parte sulla mappa in modo che l'utente abbia una leggera idea di più marcatori.
Tengo traccia dei marcatori sulla mappa e le loro posizioni sulla mappa, e ogni volta che voglio aggiungere un indicatore sulla mappa mi assicuro che nessun altro marcatore sia visualizzato sulla stessa posizione. Se sì, aggiungo un offset alla posizione del nuovo marcatore che voglio aggiungere.
static final float COORDINATE_OFFSET = 0.00002f; // You can change this value according to your need
Sotto il metodo restituisce la posizione che deve essere utilizzata per il nuovo marcatore. Questo metodo prende come parametri l'attuale latitudine e longitudine del nuovo marcatore.
// Check if any marker is displayed on given coordinate. If yes then decide
// another appropriate coordinate to display this marker. It returns an
// array with latitude(at index 0) and longitude(at index 1).
private String[] coordinateForMarker(float latitude, float longitude) {
String[] location = new String[2];
for (int i = 0; i <= MAX_NUMBER_OF_MARKERS; i++) {
if (mapAlreadyHasMarkerForLocation((latitude + i
* COORDINATE_OFFSET)
+ "," + (longitude + i * COORDINATE_OFFSET))) {
// If i = 0 then below if condition is same as upper one. Hence, no need to execute below if condition.
if (i == 0)
continue;
if (mapAlreadyHasMarkerForLocation((latitude - i
* COORDINATE_OFFSET)
+ "," + (longitude - i * COORDINATE_OFFSET))) {
continue;
} else {
location[0] = latitude - (i * COORDINATE_OFFSET) + "";
location[1] = longitude - (i * COORDINATE_OFFSET) + "";
break;
}
} else {
location[0] = latitude + (i * COORDINATE_OFFSET) + "";
location[1] = longitude + (i * COORDINATE_OFFSET) + "";
break;
}
}
return location;
}
// Return whether marker with same location is already on map
private boolean mapAlreadyHasMarkerForLocation(String location) {
return (markerLocation.containsValue(location));
}
Nel codice precedente, markerLocation
è una HashMap.
HashMap<String, String> markerLocation; // HashMap of marker identifier and its location as a string
Questa risposta ha il codice per Android ma vale la stessa logica in iOS.
Non è quello che stai cercando se non vuoi visualizzare una listview, è davvero la tua unica opzione – tyczj
@tyczj Stai cercando qualsiasi altra soluzione alternativa se altri ti stanno utilizzando come visualizzare le icone dei marker leggermente inclinate a sinistra/destra per illustrare i marker multipli sullo stesso punto. O qualsiasi altro lavoro intorno ad altri potrebbe avere però. – Geek
Ciao Voglio mostrare listview o espandere i marker che si trovano nella stessa posizione sulla mappa. C'è un modo per raggiungere questo obiettivo? Voglio implementarlo in questo modo: http://jawj.github.io/OverlappingMarkerSpiderfier/demo.html – AndiM