Una finestra informativa ti consente di mostrare informazioni all'utente quando tocca un indicatore.
Viene disegnata una finestra informativa rivolta verso lo schermo del dispositivo, centrata sopra relativo all'indicatore associato. La finestra informativa predefinita contiene il titolo in grassetto, con il testo dello snippet sotto il titolo.
I contenuti della finestra informativa sono definiti dai title
e
Proprietà snippet
dell'indicatore. Facendo clic sull'indicatore non viene visualizzato
finestra informativa se entrambe le proprietà title
e snippet
sono vuote o nil
.
Viene visualizzata una sola finestra informativa alla volta. Se un utente tocca un altro indicatore, la finestra corrente è nascosta e si apre la nuova finestra informativa. Se l'utente fa clic su un indicatore che al momento mostra una finestra informativa, la finestra informativa si chiude e riapre.
Crea una finestra informativa personalizzata per aggiungere testo o immagini. Un segmento di pubblico personalizzato finestra informativa ti permette di avere il controllo completo dell'aspetto del popup.
Aggiungi una finestra informativa
Il seguente snippet crea un semplice indicatore con solo un titolo per il testo della finestra informativa.
Swift
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: position) london.title = "London" london.map = mapView
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:position]; london.title = @"London"; london.map = mapView;
Con la proprietà snippet
, puoi aggiungere altro testo che verrà visualizzato
sotto il titolo con un carattere più piccolo. Stringhe più lunghe della larghezza di
la finestra informativa viene automaticamente ricoperta su più righe. Molto lungo
i messaggi potrebbero essere troncati.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView;
Mostra/nascondi una finestra informativa
Le finestre informative sono progettate per rispondere agli eventi di tocco dell'utente sull'indicatore.
Puoi mostrare o nascondere una finestra informativa in modo programmatico impostando l'selectedMarker
proprietà di GMSMapView
:
- Imposta
selectedMarker
sul nome dell'indicatore per mostrarlo. - Imposta
selectedMarker
sunil
per nasconderlo.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView // Show marker mapView.selectedMarker = london // Hide marker mapView.selectedMarker = nil
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView; // Show marker mapView.selectedMarker = london; // Hide marker mapView.selectedMarker = nil;
Impostazione di una finestra informativa per l'aggiornamento automatico
Imposta tracksInfoWindowChanges
nella
indicatore su YES
o true
se vuoi nuove proprietà o i contenuti delle informazioni
venga visualizzata immediatamente in caso di modifica, anziché dover attendere
la finestra informativa da nascondere e mostrare di nuovo. Il valore predefinito è NO
o false
.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
Per decidere quando impostare
proprietà tracksInfoWindowChanges
,
devono valutare le prestazioni e confrontarlo con i vantaggi derivanti dall'avere
la finestra informativa ridisegnata automaticamente. Ad esempio:
- Se devi apportare una serie di modifiche, puoi impostare la proprietà su
YES
poi torna aNO
. - Quando un'animazione è in esecuzione o i contenuti vengono caricati in modo asincrono,
devi mantenere la proprietà impostata su
YES
fino al completamento delle azioni.
Fai riferimento anche alle note da prendere in considerazione quando
utilizzando la proprietà iconView
dell'indicatore.
Modifica della posizione di una finestra informativa
Viene disegnata una finestra informativa orientata rispetto allo schermo del dispositivo e centrata
sopra l'indicatore associato. Puoi modificare la posizione della finestra informativa
rispetto all'indicatore impostando la proprietà infoWindowAnchor
. Questo
accetta un valore CGPoint
, definito come offset (x,y) in cui sia x sia y
è compreso tra 0,0 e 1,0. L'offset predefinito è (0,5, 0,0), ovvero il centro
in alto. L'impostazione dell'offset di infoWindowAnchor
è utile per allineare le informazioni
finestra accanto a un'icona personalizzata.
Swift
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5) london.icon = UIImage(named: "house") london.map = mapView
Objective-C
london.infoWindowAnchor = CGPointMake(0.5, 0.5); london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
Gestione degli eventi nelle finestre informative
Puoi ascoltare i seguenti eventi nella finestra informativa:
mapView:markerInfoWindow:
— Richiamato quando un indicatore sta per essere selezionato. Facoltativamente, puoi restituire una finestra informativa personalizzata, comeUIView
, da utilizzare per l'indicatore. Per ulteriori informazioni, consulta la sezione Finestre informative personalizzate di seguito.mapView:markerInfoContents:
— Richiamato semapView:markerInfoWindow
restituisce nil.mapView:didCloseInfoWindowOfMarker:
— Richiamato quando la finestra informativa dell'indicatore è chiusa.mapView:didLongPressInfoWindowOfMarker:
— Richiamato dopo la pressione prolungata della finestra informativa di un indicatore.
Per rimanere in ascolto degli eventi, devi implementare il metodo
GMSMapViewDelegate
. Consulta le
guida agli eventi e l'elenco dei metodi disponibili sul
GMSMapViewDelegate
GitHub include esempi che dimostrano come gestire gli eventi della finestra informativa:
Finestre informative personalizzate
Personalizza i contenuti delle finestre informative creando una sottoclasse di
UIView
che definisce il layout della finestra informativa personalizzata. In questa sottoclasse,
definisci la visualizzazione come preferisci. Ad esempio, puoi utilizzare i prompt
UILabel
per visualizzare il testo del titolo e degli snippet e altre visualizzazioni, come
UIImageView
di Compute Engine, per aggiungere immagini
visualizzate nella finestra informativa.
Assicurati che il tuo ViewController
implementi il
GMSIndoorDisplayDelegate
e definisce un listener per
mapView:markerInfoWindow:
. Questo listener di eventi viene chiamato quando un indicatore sta per diventare
selezionata e ti consente di restituire un'istanza della tua classe UIView
personalizzata
definisci la finestra informativa personalizzata utilizzata dall'indicatore.
Le immagini di seguito mostrano una finestra informativa predefinita, una finestra informativa contenuti e una finestra informativa con cornice e sfondo personalizzati.
Gli esempi di codice su GitHub fornita con Maps SDK for iOS Includi esempi di finestre informative personalizzate. Ad esempio, consulta la definizione di MarkerInfoWindowViewController.m (Objective-C) oppure MarkerInfoWindowViewController.swift (Swift).
Consulta gli esempi di codice per informazioni sul download e l'esecuzione questi esempi.