Bene, ogni indicatore della mia applicazione rappresenterà un utente, quindi devo identificarlo quando faccio clic sulla finestra informativa per ottenere i suoi dati da Internet, e posso Fallo identificare per nome per ovvi motivi. È possibile aggiungere un attributo extra a un oggetto marcatore? Grazie!Aggiungi identificazione al marker su google maps v2 api per android
risposta
Si potrebbe fare un controllo HashMap<Marker, User>
questo tutorial: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html
Questa dovrebbe essere contrassegnata come risposta corretta Funziona perfettamente Facile tutorial da seguire – KickingLettuce
È possibile aggiungere un attributo extra a un oggetto marcatore?
No. Marker
è final
. Inoltre, gli oggetti Marker
che crei scompaiono rapidamente, poiché vengono utilizzati solo per alcuni IPC sull'app Google Play Services. L'oggetto Marker
che si ottiene nel numero OnInfoWindowClickListener
sembra essere una copia ricostituita.
Ho un sottotitolo nel campo snippet, quindi non è un'opzione.
Certo che lo è. Salva il sottotitolo da qualche altra parte e inserisci la tua chiave nel sottotitolo dell'utente. Quando esegui il rendering di InfoWindow
dal tuo InfoWindowAdapter
, inserisci il sottotitolo.
Ecco una soluzione leggermente più semplice che ho implementato. Tutto quello che devi fare è Creare un InfoWindowAdapter che prende qualcosa che vuoi passare alla finestra nel suo costruttore.
class CustomWindowAdapter implements InfoWindowAdapter{
LayoutInflater mInflater;
private HashMap<Marker, Double> mRatingHash;
public CustomWindowAdapter(LayoutInflater i, HashMap<Marker, Double> h){
mInflater = i;
mRatingHash = h;
}
@Override
public View getInfoContents(Marker marker) {
// Getting view from the layout file
View v = mInflater.inflate(R.layout.custom_info_window, null);
TextView title = (TextView) v.findViewById(R.id.tv_info_window_title);
title.setText(marker.getTitle());
TextView description = (TextView) v.findViewById(R.id.tv_info_window_description);
description.setText(marker.getSnippet());
RatingBar rating = (RatingBar) v.findViewById(R.id.rv_info_window);
Double ratingValue = mRatingHash.get(marker);
rating.setRating(ratingValue.floatValue());
return v;
}
@Override
public View getInfoWindow(Marker marker) {
// TODO Auto-generated method stub
return null;
}
}
Si sono responsabili per qualsiasi dati che si desidera passare alla finestra di informazioni, ma si può vedere qui che sto passando un hash di rating. Solo un prototipo e non è assolutamente la soluzione migliore ma questo dovrebbe far iniziare chiunque.
Salvato il mio giorno .. grazie amico – Noman
Non penso che sia una buona idea mantenere forti riferimenti ai marcatori tramite una mappa. Poiché comunque tu usi il tuo adattatore per finestra personalizzato per eseguire il rendering dei contenuti, potresti "abusare" dello snippet() o title() su MarkerOptions per memorizzare le tue informazioni. Sono entrambe stringhe, quindi dipendevano dall'informazione per archiviare un po 'di memoria, dall'altra parte si sarebbe al sicuro da perdite di memoria mantenendo forti riferimenti ai marcatori.
Inoltre, si diventa compatibili con il modo in cui Maps gestisce la persistenza durante gli arresti e riprende.
Sto utilizzando una classe aggiuntiva per associare alcune informazioni e funzioni a ogni indicatore. Non penso che questo sia l'approccio migliore, ma è un'opzione. Soprattutto se si desidera avere più della semplice informazione associata a ciascun indicatore di mappa. Ecco la struttura di base che uso per questo.
// Make an array list of for all of your things
ArrayList<Thing> things;
class Thing {
long thing_key;
String thing_string;
int thingRadius;
Double coord_long;
Double coord_lat;
Marker marker;
}
// Then to use this to start your list.
things = new ArrayList<>();
// Create the thing object and save all the data
thing = new Thing();
thing.marker = thingMarker;
thing.thing_key = thing_key;
thing.thing_string = thing_string;
thing.radius = Integer.getInteger(thingRadius.getText().toString());
// Save the thing to the thing ArrayList
things.add(thing);
- 1. Android Google Maps v2 - Aggiungi oggetto al marker
- 2. Google maps api v2 zoom vicino al marker
- 3. Marker bitmap di centraggio (API di Google Maps Android v2)
- 4. Google Maps API Android v2 Overlay
- 5. Indicatori di centro API V2 per Android Google maps
- 6. Android Studio Maps Api v2
- 7. Nascondi la finestra di informazioni sui marker in Android google maps API v2
- 8. È possibile mostrare/nascondere i marker in Android Google maps api v2?
- 9. Google Maps API Android v2 molto lento quando si aggiungono molti marker
- 10. rilevamento Touch polyline in Google Maps Android API v2
- 11. Attivazione di un evento mappa (come un clic su un marker) in Google maps Android V2
- 12. Google Maps v2 Marker zOrdering - Imposta in cima
- 13. Come mettere drawable come sfondo su InfoWindow (API di Google Maps v2 per Android)?
- 14. schermata grigia di Google Maps API v2
- 15. Come sapere quale Marker è stato cliccato su Google Maps v2 per Android?
- 16. marker multipli google maps embed API
- 17. Come mostrare più marker su MapFragment in Google Maps API v2?
- 18. Bitmap di ridisegno su Google Maps v2 per Android
- 19. API Android di Google Maps v2 creando una nuova LocationSource
- 20. Google Map v2 Marker Animation
- 21. API di Google Maps v2 in Dialog
- 22. Google Maps API v2 non funziona
- 23. Android Google Maps v2: ascoltatore su clic che non risponde
- 24. Google android maps api v2 Mostra sempre il titolo dell'indicatore
- 25. Imposta larghezza di InfoWindow personalizzata in Google Maps API v2
- 26. Apri mappe stradali con Android Google Maps Api v2
- 27. Ottenere una chiave API v2 Google Maps
- 28. Google Maps Android V2 - Schermo vuoto
- 29. Come eseguire Google Map API V2 su emulatore di Android
- 30. Aggiungi un marker al centro della mappa google statica
come hai aggiunto i marcatori? come sovrapposizione? –
È possibile utilizzare il campo snippet della classe Marker. –
Ho un sottotitolo nel campo snippet, quindi non è un'opzione. Cosa intendi come sovrapposizione? Li aggiungo con map.addMarker (... – vdrg