Shapes

Seleziona piattaforma: Android iOS JavaScript

Mappa con una polilinea rossa fissa

L'API di Google Maps per Android offre alcuni semplici modi 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 desiderata e possono essere utilizzati per contrassegnare percorsi e percorsi sulla mappa.
  • Una Polygon è una forma racchiusa che può essere utilizzata per contrassegnare le aree sulla mappa.
  • Una Circle è una proiezione geograficamente accurata di un cerchio sulla superficie terrestre tracciata sulla mappa.

Per tutte queste forme, puoi personalizzarne l'aspetto modificando diverse 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 Android.

Inoltre, il repository ApiDemos su GitHub include esempi che mostrano l'uso delle forme e delle loro caratteristiche:

Polilinee

La classe Polyline definisce un insieme di segmenti di linea collegati sulla mappa. Un oggetto Polyline è composto da un insieme di LatLng località e crea una serie di segmenti pubblicitari che collegano tali località in una sequenza ordinata.

Questo video fornisce idee su come aiutare gli utenti a raggiungere la propria destinazione, utilizzando le polilinee per tracciare un percorso sulla mappa.

Per creare una polilinea, devi prima creare un oggetto PolylineOptions e aggiungere punti. I punti rappresentano un punto sulla superficie terrestre ed sono espressi come oggetto LatLng. I segmenti vengono tracciati tra i punti in base all'ordine in cui vengono aggiunti all'oggetto PolylineOptions.

Per aggiungere punti a un oggetto PolylineOptions, chiama PolylineOptions.add(). Tieni presente che questo metodo prende un numero variabile di parametri in modo da poter aggiungere più punti alla volta (puoi anche chiamare PolylineOptions.addAll(Iterable<LatLng>) se i punti sono già in un elenco).

Successivamente potrai aggiungere la polilinea a una mappa chiamando GoogleMap.addPolyline(PolylineOptions). Il metodo restituisce un oggetto Polyline con cui puoi 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:

Mappa con una polilinea rettangolare

Per modificare la forma della polilinea dopo che è stata aggiunta, puoi chiamare Polyline.setPoints() e fornire un nuovo elenco di punti per la polilinea.

Puoi personalizzare l'aspetto della polilinea prima di aggiungerlo alla mappa e dopo averlo aggiunto alla mappa. 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 multicolori impostano segmenti polilinea in colori diversi.
  • Le polilinee sfumatura colorano una polilinea utilizzando una sfumatura di due colori.
  • Con le polilinee stampate, puoi definire una polilinea utilizzando bitmap ripetute.

Per utilizzare le personalizzazioni di Polyline, devi utilizzare la 18.1.0 o versioni successive dell'SDK Maps per Android e il renderer più recente l'SDK Maps per Android.

Creazione di una polilinea multicolore

Mappa con polilinea multicolore

Puoi utilizzare gli intervalli per colorare singolarmente 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 di riga corrispondente. L'esempio seguente mostra come impostare i colori dei segmenti 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 sfumatura

Mappa con una polilinea a gradiente

Puoi definire un gradiente specificando due numeri interi alfa-rosso-verde-blu (ARGB) a 32 bit, per specificare i colori iniziale e finale del tratto. Imposta questa proprietà sull'oggetto opzioni della forma chiamando PolylineOptions.addSpan(). L'esempio seguente mostra come creare una polilinea dal gradiente 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 timbrata

Mappa con una polilinea timbrata

Puoi impostare l'aspetto di una polilinea su una texture bitmap ricorrente. Per farlo, crea un StampStyle di TextureStyle, quindi imposta questa proprietà nell'oggetto opzioni di shape chiamando PolylineOptions.addSpan() come mostrato di seguito:

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 Polyline

Per impostazione predefinita, le polilinee non sono cliccabili. Puoi attivare e disattivare la cliccabilità chiamando Polyline.setClickable(boolean).

Utilizza OnPolylineClickListener per ascoltare gli eventi di clic su una polilinea selezionabile. 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 sono costituiti da una serie di coordinate in una sequenza ordinata. Tuttavia, anziché essere aperti, i poligoni sono progettati per definire le aree geografiche in un anello chiuso con l'interno compilato.

Puoi aggiungere Polygon alla mappa nello stesso modo in cui aggiungi Polyline. Innanzitutto, crea un oggetto PolygonOptions a cui aggiungi alcuni punti. Questi punti formeranno il contorno del poligono. Poi aggiungi il poligono alla mappa chiamando GoogleMap.addPolygon(PolygonOptions), che restituirà un oggetto Polygon.

Il seguente snippet di codice aggiunge 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 il campo 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 averlo aggiunto alla mappa. Per ulteriori dettagli, consulta la sezione sulla personalizzazione degli aspetti di seguito.

Completamento automatico poligono

Il poligono nell'esempio precedente è composto da cinque coordinate, ma nota che la prima e l'ultima coordinate sono la stessa posizione, che definisce il laccio. Nella pratica, tuttavia, poiché i poligoni definiscono le aree chiuse, non è necessario definire quest'ultima coordinata. Se l'ultima coordinata è diversa dalla prima, l'API "chiude" automaticamente il poligono aggiungendo la prima coordinata alla fine della sequenza di coordinate.

I due poligoni seguenti sono equivalenti e, per ciascuno, polygon.getPoints() restituisce 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, come gli anelli riempiti o "donuts". Le forme complesse sono sempre la composizione di più percorsi 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. Quindi, passa un secondo percorso al metodo addHole(). Quando il secondo percorso più piccolo è racchiuso dal percorso più grande, sembrerà che un pezzo di poligono sia stato rimosso. Se il foro si interseca con il contorno, il rendering del poligono verrà eseguito senza alcun riempimento.

Lo snippet seguente creerà un rettangolo 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 appare sulla mappa come mostrato di seguito:

Mappa con polilinea rettangolare

Eventi per poligoni

Per impostazione predefinita, i poligoni non sono cliccabili. Puoi attivare e disattivare la cliccabilità chiamando Polygon.setClickable(boolean).

Utilizza una 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

Mappa con un cerchio

Oltre a una classe Polygon generica, l'API di Maps include anche classi specifiche per gli oggetti Circle, per semplificarne la costruzione.

Per costruire un cerchio, devi specificare le due proprietà seguenti:

  • center come LatLng.
  • radius in metri.

Un cerchio rappresenta quindi l'insieme di tutti i punti sulla superficie terrestre a radius metri di distanza dal dispositivo center specificato. A causa 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 verrà visualizzato come un cerchio quasi perfetto sulla mappa quando si trova vicino all'equatore e verrà visualizzato sempre più non circolare (sullo schermo) quando il cerchio si allontana dall'equatore.

Per modificare la forma del cerchio dopo averlo aggiunto, puoi chiamare il numero Circle.setRadius() o Circle.setCenter() e fornire nuovi valori.

Puoi personalizzare l'aspetto del cerchio prima di aggiungerlo alla mappa e dopo averlo aggiunto alla mappa. Per ulteriori dettagli, consulta la sezione sulla personalizzazione degli aspetti di seguito.

Il seguente snippet di codice aggiunge un cerchio alla mappa costruendo 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 nelle cerchie

Per impostazione predefinita, non è possibile fare clic sulle cerchie. Puoi attivare e disattivare la cliccabilità chiamando GoogleMap.addCircle() con CircleOptions.clickable(boolean) o chiamando Circle.setClickable(boolean).

Usa una OnCircleClickListener per ascoltare gli eventi 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 mostrato nell'esempio di codice seguente:

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
}

      

Personalizzare gli aspetti

Puoi modificare l'aspetto di una forma prima che venga aggiunta alla mappa (specificando la proprietà desiderata nell'oggetto options) o dopo che è stata aggiunta alla mappa. I getter sono inoltre esposti per tutte le proprietà, in modo che tu possa accedere facilmente allo stato attuale della forma.

Lo snippet che segue aggiunge una polilinea spessa blu con segmenti geodetici da Mezzanotte a Perth. Le proprietà riportate di seguito 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 appare come mostrato di seguito:

Mappa con polilinea da Melbourne a Perth

Nota: sebbene la maggior parte di queste possa essere applicata a tutte le forme descritte, alcune proprietà potrebbero non avere senso per 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 alpha-red-green-blue (ARGB) a 32 bit che specifica l'opacità e il colore del tratto della forma. Imposta questa proprietà nell'oggetto options 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 aver aggiunto la forma alla mappa, puoi accedere al colore del tratto chiamando getStrokeColor() (o getColor() per una polilinea) e puoi modificarlo 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. Per un poligono, le aree geografiche all'interno dei suoi fori non fanno parte dell'interno del poligono e non saranno colorate se viene impostato un colore di riempimento.

Il colore di riempimento è un numero intero a 32 bit alfa-rosso-verde-blu (ARGB) che specifica l'opacità e il colore dell'interno della forma. Imposta questa proprietà sull'oggetto opzioni di shape chiamando *Options.fillColor(). Se non è specificato, il colore predefinito del tratto è trasparente (Color.TRANSPARENT).

Dopo aver aggiunto la forma alla mappa, è possibile accedere al colore di riempimento chiamando getFillColor() e può essere modificato chiamando setFillColor().

Ampiezza tratto

Lo spessore del tratto di linea, come un numero in virgola mobile in pixel. La larghezza non viene ridimensionata quando la mappa viene ingrandita, ovvero 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 il valore non è specificato, il valore predefinito è 10 pixel.

Dopo aver aggiunto la forma alla mappa, è possibile accedere allo spessore del tratto chiamando getStrokeWidth() (o getWidth() per una polilinea) e puoi modificarlo chiamando setStrokeWidth() (setWidth() for a polyline).

Tracciato

Lo schema tratto predefinito è una linea continua per le polilinee e per i contorni di poligoni e cerchi. Puoi specificare un pattern di tratto personalizzato degli oggetti PatternItem, in cui ogni elemento è un trattino, un punto o uno spazio.

L'esempio seguente imposta il pattern di una polilinea in una sequenza ripetuta di un punto, seguita da uno spazio di 20 pixel, da un trattino di 30 pixel e un altro intervallo 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 pattern si ripete lungo la linea, partendo dal primo elemento del pattern nel primo vertice specificato per la forma.

Tipi di giunti

Per le polilinee e i contorni dei poligoni, puoi specificare uno smusso o un tondo JointType per sostituire il tipo predefinito di snodo fisso.

Il seguente campione applica a un polilinea un tipo di giunzione rotonda:

Java


polyline.setJointType(JointType.ROUND);

      

Kotlin


polyline.jointType = JointType.ROUND

      

Il tipo di unione influisce sulle curve interne nella linea. Se la linea ha un pattern di tratto che include trattini, il tipo di unione si applica anche quando un trattino si trova a un tratto. I tipi di unione non hanno effetto sui punti poiché sono sempre circolari.

Limiti di riga

Puoi specificare uno stile Cap per ciascuna estremità di una polilinea. Le opzioni sono Butt (predefinito), quadrata, rotonda o una bitmap personalizzata. Imposta lo stile in PolylineOptions.startCap e PolylineOptions.endCap o usa i metodi getter e setter appropriati.

Lo snippet che segue specifica un limite rotondo all'inizio di una polilinea.

Java


polyline.setStartCap(new RoundCap());

      

Kotlin


polyline.startCap = RoundCap()

      

Il seguente snippet 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 una larghezza del tratto di riferimento in pixel. L'API scala di conseguenza la bitmap. La larghezza del tratto di riferimento è la larghezza del tratto che hai utilizzato per progettare l'immagine bitmap del limite, 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 uno zoom al 100% in un editor di immagini e traccia la larghezza desiderata del tratto della linea rispetto all'immagine.

Se usi BitmapDescriptorFactory.fromResource() per creare la bitmap, assicurati di utilizzare una risorsa indipendente dalla densità (nodpi).

Segmenti geodetici

L'impostazione geodetica viene applicata solo a polilinee e poligoni. Non si applica alle cerchie perché 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/poligono. I segmenti geodetici sono quelli che seguono il percorso più breve lungo la superficie terrestre (una sfera) e spesso vengono visualizzati come linee curve su una mappa con una proiezione di Mercatore. I segmenti non geodetici vengono tracciati come linee rette sulla mappa.

Imposta questa proprietà nell'oggetto opzione della forma chiamando *Options.geodesic() dove true indica che i segmenti devono essere disegnati come area geografica e false indica che i segmenti devono essere disegnati su linee rette. Se non viene specificato un valore predefinito, i segmenti non sono geografici (false).

Dopo aver aggiunto la forma alla mappa, è possibile accedere all'impostazione geodetica chiamando isGeodesic() e può essere modificata chiamando setGeodesic().

Z-index

Lo z-index specifica l'ordine di sovrapposizione di questa forma, rispetto agli altri overlay (altre forme, overlay del suolo e overlay del riquadro) sulla mappa. Un overlay con uno z-index alto viene tracciato sopra gli overlay con z-index inferiori. Due overlay con lo stesso z-index vengono disegnati in ordine arbitrario.

Tieni presente che gli indicatori vengono sempre tracciati sopra gli altri overlay, a prescindere dallo z-index degli altri overlay.

Imposta questa proprietà sull'oggetto opzioni della forma chiamando *Options.zIndex(). Se non viene specificato, lo z-index predefinito è 0. Dopo aver aggiunto la forma alla mappa, è possibile accedere allo z-index chiamando getZIndex() e può essere modificata 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. Consente di non visualizzare temporaneamente una forma sulla mappa. Per rimuovere definitivamente la forma dalla mappa, chiama remove() con quella forma.

Imposta questa proprietà sull'oggetto opzioni della forma chiamando *Options.visible(). Se non è specificato, il valore predefinito è true. Dopo aver aggiunto la forma alla mappa, è possibile accedere alla visibilità chiamando isVisible() e può essere modificata chiamando setVisible().

Associa i dati a una forma

Puoi archiviare un oggetto dati arbitrario con una polilinea, un poligono o un cerchio utilizzando il metodo setTag() della forma e recuperarlo utilizzando getTag(). Ad esempio, chiama Polyline.setTag() per archiviare un oggetto dati con una polilinea e richiama Polyline.getTag() per recuperare l'oggetto dati.

Il codice riportato 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 i dati con le forme:

  • L'app può adattarsi a diversi tipi di forme e vuoi trattarli in modo diverso quando l'utente fa clic su di essi.
  • Potresti interfacciarti con un sistema con identificatori di record univoci, in cui le forme rappresentano record specifici nel sistema.
  • I dati della forma possono indicare una priorità per determinare lo z-index per la forma.