- Introduzione
- Aggiungi un GeoJsonlayer alla mappa
- Rimuovi lo GeoJsonLayer
- Aggiungere e rimuovere un GeoJsonFeature
- Accedi a GeoJsonFeatures e le loro proprietà
- Applica gli stili GeoJsonlayer e GeoJsonFeatures
- Guarda l'app demo
Introduzione
GeoJSON è un'estensione dei dati JSON
e rappresenta i dati geografici. Con questa utilità, puoi archiviare
le caratteristiche geografiche in formato GeoJSON e visualizzarle sotto forma di livello sopra
la mappa. Per aggiungere e rimuovere i tuoi dati GeoJSON da e verso la mappa, chiama
addLayerToMap()
e removeLayerFromMap()
rispettivamente. In modo analogo
puoi aggiungere e rimuovere singole funzionalità chiamando
addFeature()
e removeFeature()
e superando un
GeoJsonFeature
oggetto. Per accedere a queste funzionalità,
può chiamare getFeatures()
per ottenere un iterabile di tutti gli oggetti
GeoJsonFeature
che sono stati aggiunti al livello.
Puoi anche impostare gli stili predefiniti da applicare agli elementi prima che vengano
aggiunto al livello, richiamando getDefaultPointStyle()
,
getDefaultLineStringStyle()
o
getDefaultPolygonStyle()
e impostazione delle opzioni di stile su ciascuno.
In alternativa, puoi impostare lo stile per una singola
GeoJsonFeature
chiamando il numero setPointStyle()
,
setLineStringStyle()
o setPolygonStyle()
sul
e passare l'oggetto di stile pertinente.
Aggiungi un GeoJsonlayer alla mappa
Per aggiungere un livello GeoJson alla mappa, crea prima un'istanza di un livello GeoJson . Esistono due modi per creare un'istanza per GeoJsonlayer.
Per eseguire un'importazione da un JSONObject
, occorre quanto segue:
GoogleMap
oggetto in cui deve essere visualizzato il livelloJSONObject
contenente i dati GeoJSON da aggiungere alla livello
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
Per eseguire l'importazione da un file GeoJSON locale, avrai bisogno di quanto segue:
GoogleMap
oggetto in cui deve essere visualizzato il livello- File di risorse locali contenente i dati GeoJSON
- Oggetto
Context
, necessario per aprire una risorsa locale file
Kotlin
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
Java
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
Dopo aver creato GeoJsonLayer
, chiama
addLayerToMap()
per aggiungere i dati importati alla mappa:
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
Rimuovi lo strato GeoJson
Supponiamo di aver aggiunto questo strato
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
Per cancellare GeoJsonlayer, richiama removeLayerFromMap()
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
Aggiungere e rimuovere una funzione GeoJsonFeature
Una caratteristica in GeoJSON ha il tipo "feature". Contiene una geometria, un membro della proprietà e, facoltativamente, ha un riquadro di delimitazione o un ID.
Puoi creare GeoJsonFeature
oggetti singolarmente e aggiungerli
in GeoJsonLayer
.
Supponiamo di aver creato una caratteristica contenente un punto a 0, 0 con una voce nelle sue proprietà e nessun riquadro di delimitazione.
Kotlin
val point = GeoJsonPoint(LatLng(0.0, 0.0)) val properties = hashMapOf("Ocean" to "South Atlantic") val pointFeature = GeoJsonFeature(point, "Origin", properties, null)
Java
GeoJsonPoint point = new GeoJsonPoint(new LatLng(0, 0)); HashMap<String, String> properties = new HashMap<>(); properties.put("Ocean", "South Atlantic"); GeoJsonFeature pointFeature = new GeoJsonFeature(point, "Origin", properties, null);
Per aggiungere l'elemento al livello, chiama addFeature()
e trasmettilo
la caratteristica da aggiungere.
Kotlin
layer.addFeature(pointFeature)
Java
layer.addFeature(pointFeature);
Per rimuovere un elemento dopo averlo aggiunto al livello, richiama
removeFeature()
e passare l'elemento da rimuovere.
Kotlin
layer.removeFeature(pointFeature)
Java
layer.removeFeature(pointFeature);
Accedere a GeoJsonFeatures e alle relative proprietà
Per accedere a tutte le funzioni GeoJsonFeatures aggiunte al livello, puoi
chiama getFeatures()
sul GeoJsonLayer
che
che hai creato. Verrà restituito l'iterazione di GeoJsonFeatures
a cui puoi accedere utilizzando un ciclo for-each, come mostrato di seguito.
Kotlin
for (feature in layer.features) { // Do something to the feature }
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // Do something to the feature }
Utilizza i metodi hasProperty()
e getProperty()
in
insieme al metodo getFeatures()
per verificare se ogni
ha una determinata proprietà e vi può accedere, se esiste.
Kotlin
if (feature.hasProperty("Ocean")) { val oceanProperty = feature.getProperty("Ocean") }
Java
if (feature.hasProperty("Ocean")) { String oceanProperty = feature.getProperty("Ocean"); }
Eventi di clic su GeoJSON Geometry
Puoi utilizzare GeoJsonLayer.OnFeatureClickListener()
per rimanere in ascolto degli eventi di clic nella
elementi geometrici sulla mappa. L'esempio seguente registra il titolo di una caratteristica quando l'utente
fa clic sulla funzionalità:
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i("GeoJsonClick", "Feature clicked: ${feature.getProperty("title")}") }
Java
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener(new Layer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("GeoJsonClick", "Feature clicked: " + feature.getProperty("title")); } });
Definizione delle caratteristiche GeoJsonlayer e GeoJson
Puoi impostare stili predefiniti per un GeoJsonlayer oppure applicare stili a singoli elementi. nel livello.
Stili predefiniti
In un GeoJsonlayer puoi impostare stili predefiniti per qualsiasi punto, lineastringa e i poligoni aggiunti al livello. Gli stili predefiniti vengono applicati solo se l'elemento non ha uno stile impostato per nessuna delle sue geometrie. Qualsiasi le modifiche apportate allo stile predefinito verranno applicate anche a tutti gli elementi che utilizzano lo stile predefinito.
Per applicare uno stile predefinito, procedi nel seguente modo:
- Recupera l'oggetto di stile predefinito pertinente, può essere uno di
GeoJsonPointStyle
, unGeoJsonLineStringStyle
o unGeoJsonPolygonStyle
. - Applica allo stile le opzioni che preferisci.
Ad esempio, il seguente esempio di codice mostra come modificare il punto predefinito che renderà i punti trascinabili con un titolo e uno snippet.
Kotlin
val pointStyle = layer.defaultPointStyle pointStyle.isDraggable = true pointStyle.title = "Hello, World!" pointStyle.snippet = "I am a draggable marker"
Java
GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle(); pointStyle.setDraggable(true); pointStyle.setTitle("Hello, World!"); pointStyle.setSnippet("I am a draggable marker");
Stili specifici di una caratteristica GeoJson
In alternativa, puoi assegnare uno stile a singoli elementi nel livello. I passaggi per
applicare uno stile su un GeoJsonFeature
sono i seguenti.
- Crea l'oggetto di stile pertinente. Può essere un
GeoJsonPointStyle
,GeoJsonLineStringStyle
oGeoJsonPolygonStyle
. - Applica allo stile le opzioni che preferisci.
- Passa l'oggetto di stile a
il metodo pertinente in
GeoJsonFeature
, che verràsetPointStyle()
,setLineStringStyle()
osetPolygonStyle()
.
Ad esempio, questo è il modo in cui personalizzare lo stile linestring per
GeoJsonFeature
in modo che il suo colore sia rosso.
Kotlin
// Create a new feature containing a linestring val lineStringArray: MutableList<LatLng> = ArrayList() lineStringArray.add(LatLng(0.0, 0.0)) lineStringArray.add(LatLng(50.0, 50.0)) val lineString = GeoJsonLineString(lineStringArray) val lineStringFeature = GeoJsonFeature(lineString, null, null, null) // Set the color of the linestring to red val lineStringStyle = GeoJsonLineStringStyle() lineStringStyle.color = Color.RED // Set the style of the feature lineStringFeature.lineStringStyle = lineStringStyle
Java
// Create a new feature containing a linestring List<LatLng> lineStringArray = new ArrayList<LatLng>(); lineStringArray.add(new LatLng(0, 0)); lineStringArray.add(new LatLng(50, 50)); GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray); GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null); // Set the color of the linestring to red GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle(); lineStringStyle.setColor(Color.RED); // Set the style of the feature lineStringFeature.setLineStringStyle(lineStringStyle);
Guarda l'app demo
Ecco un esempio di importazione di un file GeoJSON da un URL e creazione di un livello
dai un'occhiata a GeoJsonDemoActivity
nell'app demo
fornito insieme alla libreria di utility. La guida alla configurazione ti mostra come
per eseguire l'app demo.