L'API di Google Maps per Android offre alcuni modi semplici per aggiungere forme alle mappe al fine di personalizzarle per la tua applicazione.
- Una
Polyline
è una serie di segmenti di linee collegate che possono formare qualsiasi forma e possono essere utilizzati per contrassegnare percorsi e percorsi sulla mappa. - Una
Polygon
è una forma chiusa che può essere utilizzata per contrassegnare le aree sulla mappa. - Una
Circle
è una proiezione geograficamente accurata di un cerchio sulla superficie terrestre disegnata sulla mappa.
Puoi personalizzare l'aspetto di tutte queste forme modificando una serie di proprietà.
Esempi di codice
Il tutorial sull'aggiunta di poligoni e polilinee per rappresentare aree e percorsi include tutto il codice per una semplice app per Android.
Inoltre, il repository ApiDemos su GitHub include esempi che dimostrano l'uso delle forme e delle loro funzionalità:
- CircleDemoActivity (Java / Kotlin): cerchio
- PolygonDemoActivity (Java / Kotlin): poligono
- PolylineDemoActivity (Java / Kotlin): polilinea
Polilinee
La classe Polyline
definisce un insieme di segmenti di linee connessi sulla mappa. Un oggetto Polyline
è costituito da un insieme di località
LatLng
e crea una serie di segmenti di linea che
connettono tali località in una sequenza ordinata.
Questo video offre idee su come aiutare gli utenti a raggiungere la loro destinazione utilizzando le polilinee per tracciare un percorso sulla mappa.
Per creare una polilinea, devi prima creare un oggetto PolylineOptions
a cui aggiungere dei punti. I punti rappresentano un punto sulla superficie terrestre e sono espressi come oggetto LatLng
. I segmenti di linea vengono tracciati
tra i punti in base all'ordine in cui li aggiungi all'oggetto
PolylineOptions
.
Per aggiungere punti a un oggetto PolylineOptions
, chiama PolylineOptions.add()
.
Tieni presente che questo metodo richiede un numero variabile di parametri, quindi puoi aggiungere più punti alla volta (puoi anche chiamare PolylineOptions.addAll(Iterable<LatLng>)
se i punti sono già in un elenco).
Puoi quindi aggiungere la polilinea a una mappa chiamando
GoogleMap.addPolyline(PolylineOptions)
. Il metodo restituisce un oggetto Polyline
con cui è possibile modificare la polilinea in un secondo momento.
Il seguente snippet di codice illustra come aggiungere un rettangolo a una mappa:
Java
// Instantiates a new Polyline object and adds points to define a rectangle PolylineOptions polylineOptions = new PolylineOptions() .add(new LatLng(37.35, -122.0)) .add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(new LatLng(37.35, -122.0)); // Closes the polyline. // Get back the mutable Polyline Polyline polyline = map.addPolyline(polylineOptions);
Kotlin
// Instantiates a new Polyline object and adds points to define a rectangle val polylineOptions = PolylineOptions() .add(LatLng(37.35, -122.0)) .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(LatLng(37.35, -122.0)) // Closes the polyline. // Get back the mutable Polyline val polyline = map.addPolyline(polylineOptions)
Il rettangolo viene visualizzato sulla mappa come mostrato di seguito:
Per modificare la forma della polilinea dopo averla aggiunta, puoi chiamare Polyline.setPoints()
e fornire un nuovo elenco di punti per la polilinea.
Puoi personalizzare l'aspetto della polilinea sia prima di aggiungerla alla mappa sia dopo averla aggiunta. Per ulteriori dettagli, consulta la sezione sulla personalizzazione degli aspetti di seguito.
Personalizzazione polilinea
Esistono diversi modi per personalizzare l'aspetto delle polilinee:
- Le polilinee multicolore impostano i segmenti della polilinea su colori diversi.
- Le polilinee a sfumatura colorano una polilinea utilizzando un gradiente di due colori.
- Polilinee timbrate assegna uno stile a una polilinea utilizzando bitmap ripetute.
Per utilizzare le personalizzazioni Polyline, devi utilizzare la versione 18.1.0 o versioni successive dell'SDK Maps for Android e utilizzare il renderer dell'SDK Maps per Android più recente.
Creazione di una polilinea multicolore
Puoi utilizzare le sezioni per colorare individualmente i segmenti di una polilinea creando oggetti StyleSpan
e aggiungendoli a PolylineOptions
con i metodi addSpan()
o addSpans()
. Per impostazione predefinita, ogni elemento nell'array imposta il colore del segmento pubblicitario corrispondente. L'esempio seguente mostra l'impostazione dei colori del segmento per creare una polilinea con segmenti rossi e verdi:
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(Color.RED)) .addSpan(new StyleSpan(Color.GREEN)));
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(StyleSpan(Color.RED)) .addSpan(StyleSpan(Color.GREEN)) )
Creazione di una polilinea del gradiente
Puoi definire un gradiente specificando due interi a 32 bit alfa-rosso-verde-blu (ARGB) per specificare i colori di inizio e fine del tratto. Imposta questa proprietà nell'oggetto opzioni della forma chiamando PolylineOptions.addSpan()
.
L'esempio seguente mostra la creazione di una polilinea con gradiente da rosso a giallo da
Woodland Park Zoo a Kirkland, WA.
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan( StyleSpan( StrokeStyle.gradientBuilder( Color.RED, Color.YELLOW ).build() ) ) )
Creazione di una polilinea stampata
Puoi impostare l'aspetto di una polilinea su una texture bitmap ripetuta. Per farlo, crea un StampStyle
di TextureStyle
, quindi imposta questa proprietà sull'oggetto opzioni della forma chiamando PolylineOptions.addSpan()
come mostrato qui:
Java
StampStyle stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build(); StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()); map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(span));
Kotlin
val stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build() val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()) map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(span) )
Eventi polilinea
Per impostazione predefinita, non è possibile fare clic sulle polilinee. Puoi abilitare e disabilitare la cliccabilità chiamando Polyline.setClickable(boolean)
.
Utilizza OnPolylineClickListener
per ascoltare gli eventi di clic su una polilinea cliccabile. Per impostare questo listener sulla mappa, chiama GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
.
Quando un utente fa clic su una polilinea, riceverai un callback onPolylineClick(Polyline)
.
Poligoni
Gli oggetti Polygon
sono simili agli oggetti Polyline
in quanto consistono di una serie di coordinate in una sequenza ordinata. Tuttavia, anziché essere aperti, i poligoni sono progettati per definire le regioni all'interno di un ciclo chiuso con l'interno riempito.
Puoi aggiungere un elemento Polygon
alla mappa nello stesso modo in cui aggiungi
una Polyline
. Per prima cosa, crea un oggetto PolygonOptions
e aggiungi alcuni punti. Questi punti formano il contorno del poligono.
Puoi quindi aggiungere il poligono alla mappa chiamando GoogleMap.addPolygon(PolygonOptions)
, che restituirà un oggetto Polygon
.
Lo snippet di codice riportato di seguito consente di aggiungere un rettangolo a una mappa.
Java
// Instantiates a new Polygon object and adds points to define a rectangle PolygonOptions polygonOptions = new PolygonOptions() .add(new LatLng(37.35, -122.0), new LatLng(37.45, -122.0), new LatLng(37.45, -122.2), new LatLng(37.35, -122.2), new LatLng(37.35, -122.0)); // Get back the mutable Polygon Polygon polygon = map.addPolygon(polygonOptions);
Kotlin
// Instantiates a new Polygon object and adds points to define a rectangle val rectOptions = PolygonOptions() .add( LatLng(37.35, -122.0), LatLng(37.45, -122.0), LatLng(37.45, -122.2), LatLng(37.35, -122.2), LatLng(37.35, -122.0) ) // Get back the mutable Polygon val polygon = map.addPolygon(rectOptions)
Per modificare la forma del poligono dopo averlo aggiunto, puoi chiamare Polygon.setPoints()
e fornire un nuovo elenco di punti per il contorno del poligono.
Puoi personalizzare l'aspetto del poligono prima di aggiungerlo alla mappa e dopo. Per ulteriori dettagli, consulta la sezione sulla personalizzazione degli aspetti di seguito.
Completamento automatico poligono
Il poligono nell'esempio precedente è costituito da cinque coordinate, ma tieni presente che la prima e l'ultima coordinate corrispondono alla stessa posizione, che definisce il loop. In pratica, tuttavia, poiché i poligoni definiscono aree chiuse, non è necessario definire quest'ultima coordinata. Se l'ultima coordinata è diversa dalla prima, l'API "chiuderà" automaticamente il poligono aggiungendo la prima coordinata alla fine della sequenza di coordinate.
I due poligoni seguenti sono equivalenti e richiamando
polygon.getPoints()
per ciascuno di essi verranno restituiti tutti e quattro i punti.
Java
Polygon polygon1 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0)) .strokeColor(Color.RED) .fillColor(Color.BLUE)); Polygon polygon2 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5)) .strokeColor(Color.RED) .fillColor(Color.BLUE));
Kotlin
val polygon1 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(0.0, 0.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) ) val polygon2 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) )
Creare un poligono vuoto
È possibile combinare più percorsi in un singolo oggetto Polygon
per creare forme complesse, ad esempio anelli pieni o "ciambelle" (in cui le aree poligonali vengono visualizzate all'interno del poligono come "isole"). Le forme complesse sono sempre
la composizione di più percorsi più semplici.
È necessario definire due percorsi nella stessa area. La più grande delle due regioni definisce l'area di riempimento ed è un semplice poligono senza opzioni aggiuntive.
Poi inserisci un secondo percorso al metodo addHole()
. Quando il secondo percorso più piccolo è completamente racchiuso da quello più grande, sembra che una parte del poligono sia stata rimossa. Se il foro si interseca con il contorno del poligono, quest'ultimo verrà visualizzato senza riempimento.
Lo snippet riportato di seguito crea un rettangolo singolo con un foro rettangolare più piccolo.
Java
List<LatLng> hole = Arrays.asList(new LatLng(1, 1), new LatLng(1, 2), new LatLng(2, 2), new LatLng(2, 1), new LatLng(1, 1)); Polygon hollowPolygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(3, 0), new LatLng(0, 0)) .addHole(hole) .fillColor(Color.BLUE));
Kotlin
val hole = listOf( LatLng(1.0, 1.0), LatLng(1.0, 2.0), LatLng(2.0, 2.0), LatLng(2.0, 1.0), LatLng(1.0, 1.0) ) val hollowPolygon = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(3.0, 0.0), LatLng(0.0, 0.0) ) .addHole(hole) .fillColor(Color.BLUE) )
Il poligono vuoto viene visualizzato sulla mappa come mostrato di seguito:
Eventi poligoni
Per impostazione predefinita, non è possibile fare clic sui poligoni. Puoi abilitare e disabilitare la cliccabilità chiamando Polygon.setClickable(boolean)
.
Utilizza OnPolygonClickListener
per
ascoltare gli eventi di clic su un poligono cliccabile. Per impostare questo listener sulla mappa, chiama GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)
.
Quando un utente fa clic su un poligono, riceverai un callback onPolygonClick(Polygon)
.
Cerchi
Oltre a una classe Polygon
generica, l'API di Google Maps include anche classi specifiche per gli oggetti Circle
, per semplificarne la costruzione.
Per creare una cerchia, devi specificare le due proprietà seguenti:
center
comeLatLng
.radius
in metri.
Un cerchio viene quindi definito come l'insieme di tutti i punti sulla superficie terrestre
che si trovano a radius
metri di distanza dal center
specificato. Per via del modo in cui la proiezione di Mercatore utilizzata dall'API di Google Maps esegue il rendering di una sfera su una superficie piana, questo apparirà sulla mappa come un cerchio quasi perfetto quando si trova vicino all'equatore e apparirà sempre più non circolare (sullo schermo) man mano che il cerchio si allontana dall'equatore.
Per modificare la forma del cerchio dopo averlo aggiunto, puoi chiamare Circle.setRadius()
o Circle.setCenter()
e fornire nuovi valori.
Puoi personalizzare l'aspetto del cerchio sia prima di aggiungerlo alla mappa sia dopo. Per ulteriori dettagli, consulta la sezione sulla personalizzazione degli aspetti di seguito.
Il seguente snippet di codice aggiunge un cerchio alla mappa creando un oggetto CircleOptions
e chiamando GoogleMap.addCircle(CircleOptions)
:
Java
// Instantiates a new CircleOptions object and defines the center and radius CircleOptions circleOptions = new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000); // In meters // Get back the mutable Circle Circle circle = map.addCircle(circleOptions);
Kotlin
// Instantiates a new CircleOptions object and defines the center and radius val circleOptions = CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) // In meters // Get back the mutable Circle val circle = map.addCircle(circleOptions)
Eventi del cerchio
Per impostazione predefinita, non è possibile fare clic sui cerchi. Puoi abilitare e disabilitare la cliccabilità chiamando GoogleMap.addCircle()
con CircleOptions.clickable(boolean)
o chiamando Circle.setClickable(boolean)
.
Utilizza OnCircleClickListener
per
ascoltare gli eventi di clic su un cerchio cliccabile. Per impostare questo listener sulla mappa, chiama GoogleMap.setOnCircleClickListener(OnCircleClickListener)
.
Quando un utente fa clic su un cerchio, riceverai un callback onCircleClick(Circle)
, come illustrato nel seguente esempio di codice:
Java
Circle circle = map.addCircle(new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000) .strokeWidth(10) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true)); map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() { @Override public void onCircleClick(Circle circle) { // Flip the r, g and b components of the circle's stroke color. int strokeColor = circle.getStrokeColor() ^ 0x00ffffff; circle.setStrokeColor(strokeColor); } });
Kotlin
val circle = map.addCircle( CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) .strokeWidth(10f) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true) ) map.setOnCircleClickListener { // Flip the r, g and b components of the circle's stroke color. val strokeColor = it.strokeColor xor 0x00ffffff it.strokeColor = strokeColor }
Personalizzazione dell'aspetto
Puoi modificare l'aspetto di una forma prima che sia stata aggiunta alla mappa (specificando la proprietà desiderata nell'oggetto opzioni) o dopo che è stata aggiunta alla mappa. I getter sono anche esposti per tutte le proprietà, in modo da poter accedere facilmente allo stato attuale della forma.
Lo snippet seguente aggiunge una spessa polilinea blu con segmenti geodetici da Melbourne a Perth. Le sezioni seguenti spiegano queste proprietà in modo più dettagliato.
Java
Polyline polyline = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
Kotlin
val polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
La mappa verrà visualizzata come mostrato di seguito:
Nota: la maggior parte di queste può essere applicata a qualsiasi forma descritta, ma alcune proprietà potrebbero non essere adatte a determinate forme (ad esempio, una polilinea non può avere un colore di riempimento perché non ha un interno).
Colore tratto
Il colore del tratto è un numero intero alfa-rosso-verde-blu (ARGB) a 32 bit che specifica l'opacità e il colore del tratto della forma. Imposta questa proprietà nell'oggetto opzioni della forma chiamando *Options.strokeColor()
(o PolylineOptions.color()
nel caso di una polilinea). Se non specificato, il colore predefinito del tratto è nero (Color.BLACK
).
Dopo che la forma è stata aggiunta alla mappa, il colore del tratto è accessibile chiamando getStrokeColor()
(o getColor()
per una polilinea) e può essere modificato chiamando setStrokeColor()
(setColor() for a polyline
).
Colore riempimento
Il colore di riempimento si applica solo a poligoni e cerchi. Non si applica alle polilinee perché non hanno interni definiti. Nel caso di un poligono, le regioni all'interno dei fori non fanno parte dell'interno del poligono e non verranno colorate se viene impostato un colore di riempimento.
Il colore di riempimento è un numero intero ARGB (rosso-verde-blu) a 32 bit che specifica l'opacità e il colore dell'interno della forma. Imposta questa proprietà nell'oggetto opzioni della forma chiamando *Options.fillColor()
. Se non specificato, il colore predefinito del tratto è trasparente (Color.TRANSPARENT
).
Dopo che la forma è stata aggiunta alla mappa, è possibile accedere al colore di riempimento
chiamando getFillColor()
e modificarlo chiamando setFillColor()
.
Ampiezza tratto
La larghezza del tratto della linea, espressa come float in pixel (px). La larghezza non viene ridimensionata quando la mappa viene ingrandita (ad esempio, una forma avrà la stessa larghezza del tratto a tutti i livelli di zoom). Imposta questa proprietà sull'oggetto opzione della forma chiamando *Options.strokeWidth()
(o PolylineOptions.width()
per una polilinea). Se non specificato, il tratto predefinito è di 10 pixel.
Dopo aver aggiunto la forma alla mappa, è possibile accedere alla larghezza del tratto chiamando getStrokeWidth()
(o getWidth()
per una polilinea) e modificando la larghezza chiamando setStrokeWidth()
(setWidth() for a polyline
).
Sequenza del tratto
Il modello del tratto predefinito è una linea continua per le polilinee e i contorni di poligoni e cerchi. Puoi specificare uno schema del tratto personalizzato per gli oggetti PatternItem
, dove ogni elemento è un trattino, un punto o un intervallo.
L'esempio seguente imposta il pattern di una polilinea su una sequenza ripetuta di un punto, seguita da un intervallo di 20 pixel, un trattino di 30 pixel e un altro spazio di 20 pixel.
Java
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
Il motivo si ripete lungo la linea, a partire dal primo elemento del pattern in corrispondenza del primo vertice specificato per la forma.
Tipi di giunzioni
Per le polilinee e i contorni dei poligoni, puoi specificare uno smusso o un arrotondamento JointType
per sostituire il tipo di giunzione fisso predefinito.
L'esempio seguente applica un tipo di giunto rotondo a una polilinea:
Java
polyline.setJointType(JointType.ROUND);
Kotlin
polyline.jointType = JointType.ROUND
Il tipo di giunto influisce sulle curve interne della linea. Se la linea ha un modello di tratto che include trattini, il tipo di giunto si applica anche quando un trattino cavalca un giunto. I tipi di giunzione non influiscono sui punti, poiché sono sempre circolari.
Capienza riga
Puoi specificare uno stile Cap
per ciascuna estremità di una polilinea. Le opzioni sono butt (predefinito), quadrato, arrotondato o una bitmap personalizzata.
Imposta lo stile in PolylineOptions.startCap
e PolylineOptions.endCap
oppure utilizza i metodi di getter e setter appropriati.
Lo snippet seguente specifica un cappello rotondo all'inizio di una polilinea.
Java
polyline.setStartCap(new RoundCap());
Kotlin
polyline.startCap = RoundCap()
Lo snippet seguente specifica una bitmap personalizzata per l'immagine statica finale:
Java
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
Kotlin
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
Quando utilizzi una bitmap personalizzata, devi specificare lo spessore del tratto di riferimento in pixel. L'API scala la bitmap di conseguenza. Lo spessore del tratto di riferimento è lo spessore del tratto utilizzato durante la progettazione dell'immagine bitmap per il cappello, in base alla dimensione originale dell'immagine. La larghezza predefinita del tratto di riferimento è 10 pixel. Suggerimento: per determinare la larghezza del tratto di riferimento, apri l'immagine bitmap con lo zoom al 100% in un editor di immagini e traccia la larghezza desiderata del tratto della linea in relazione all'immagine.
Se utilizzi BitmapDescriptorFactory.fromResource()
per creare la bitmap, assicurati di utilizzare una risorsa indipendente dalla densità (nodpi).
Segmenti geodetici
L'impostazione geodetica si applica solo a polilinee e poligoni. Non vale per le cerchie, in quanto non sono definite come una raccolta di segmenti.
L'impostazione geodetica determina il modo in cui vengono disegnati i segmenti di linea tra vertici consecutivi della polilinea/poligonale. I segmenti geodetici sono quelli che seguono il percorso più breve lungo la superficie terrestre (una sfera) e spesso appaiono come linee curve su una mappa con una proiezione di Mercatore. I segmenti non geodetici vengono tracciati sulla mappa come linee rette.
Imposta questa proprietà nell'oggetto opzione della forma richiamando
*Options.geodesic()
, dove true
indica che i segmenti devono essere tracciati come
geodetici e false
indica che i segmenti devono essere tracciati come linee rette.
Se non specificati, il valore predefinito sono segmenti non geodetici (false
).
Dopo aver aggiunto la forma alla mappa, è possibile accedere all'impostazione geodetica chiamando isGeodesic()
e modificata chiamando setGeodesic()
.
Z-index
Lo z-index specifica l'ordine di impilamento di questa forma, rispetto ad altre sovrapposizioni (altre forme, overlay al suolo e overlay di riquadri) sulla mappa. Un overlay con uno z-index elevato viene disegnato sopra gli overlay con z-index più bassi. Due overlay con lo stesso z-index vengono tracciati in ordine arbitrario.
Tieni presente che gli indicatori vengono sempre tracciati sopra gli altri overlay, indipendentemente dallo z-index degli altri overlay.
Imposta questa proprietà nell'oggetto opzioni della forma chiamando *Options.zIndex()
.
Se non specificato, lo z-index predefinito è 0
. Dopo che la forma è stata aggiunta alla mappa, è possibile accedere a z-index richiamando getZIndex()
e modificandolo chiamando setZIndex()
.
Visibilità
La visibilità specifica se la forma deve essere tracciata sulla mappa, dove true
indica che deve essere tracciata e false
indica che non deve essere tracciata. Ti consente di non visualizzare temporaneamente una forma sulla mappa. Per rimuovere definitivamente
una forma dalla mappa, chiama remove()
per quella forma.
Imposta questa proprietà nell'oggetto opzioni della forma chiamando *Options.visible()
. Se non specificata, la visibilità predefinita è true
.
Dopo aver aggiunto la forma alla mappa, è possibile accedere alla visibilità chiamando isVisible()
e modificandola chiamando setVisible()
.
Associare i dati a una forma
Puoi archiviare un oggetto di dati arbitrario con una polilinea, un poligono o un cerchio utilizzando il metodo setTag()
della forma e recuperare l'oggetto utilizzando getTag()
.
Ad esempio, chiama Polyline.setTag()
per archiviare un oggetto
dati con una polilinea e chiama Polyline.getTag()
per
recuperarlo.
Il codice di seguito definisce un tag arbitrario (A
) per la polilinea specificata:
Java
Polyline polyline = map.addPolyline((new PolylineOptions()) .clickable(true) .add(new LatLng(-35.016, 143.321), new LatLng(-34.747, 145.592), new LatLng(-34.364, 147.891), new LatLng(-33.501, 150.217), new LatLng(-32.306, 149.248), new LatLng(-32.491, 147.309))); polyline.setTag("A");
Kotlin
val polyline = map.addPolyline( PolylineOptions() .clickable(true) .add( LatLng(-35.016, 143.321), LatLng(-34.747, 145.592), LatLng(-34.364, 147.891), LatLng(-33.501, 150.217), LatLng(-32.306, 149.248), LatLng(-32.491, 147.309) ) ) polyline.tag = "A"
Di seguito sono riportati alcuni esempi di scenari in cui è utile archiviare e recuperare dati con le forme:
- La tua app può soddisfare tipi di forme diversi e vuoi trattarle in modo diverso quando l'utente fa clic su di esse.
- Potresti interfacciarti con un sistema dotato di identificatori di record univoci, in cui le forme rappresentano record specifici in quel sistema.
- I dati di forma possono indicare una priorità per determinare lo z-index della forma.