- Introduzione
- Aggiungere un livello KML
- Cancellare un livello KML
- Accedere ai contenitori KML
- Accedere a segnaposto KML e overlay al suolo KML
- Accedere alle proprietà KML
- Funzionalità supportate da KML
Introduzione
  KML
  è un'estensione del
  XML
  formato dei dati e rappresenta i dati geografici su una mappa. Utilizzando questa utilità,
  puoi convertire oggetti KML in forme geografiche e visualizzarli come livello
  in cima a una mappa. Per aggiungere e rimuovere i dati KML da e verso la mappa, richiama
  addLayerToMap() e removeLayerFromMap()
  rispettivamente. Per accedere alle proprietà in un oggetto KML, richiama
  getProperties() su qualsiasi segnaposto, overlay al suolo, documento o
  Cartella.
Aggiungere un livello KML alla mappa
Per aggiungere un livello dati alla mappa, devi prima creare un'istanza del metodo
KmlLayer corso. Esistono due modi per creare un'istanza
KmlLayer.
Per importare ed eseguire il rendering di un set di dati KML da una risorsa locale, hai bisogno di:
- Un oggetto GoogleMapin cui deve essere eseguito il rendering del livello.
- Un file di risorsa locale contenente i dati KML.
- Un oggetto Context, necessario per aprire una risorsa locale .
Kotlin
val layer = KmlLayer(map, R.raw.geojson_file, context)
Java
KmlLayer layer = new KmlLayer(map, R.raw.geojson_file, context);
Per importare ed eseguire il rendering di un set di dati KML da uno stream locale, hai bisogno di:
- Un oggetto GoogleMapin cui deve essere eseguito il rendering del livello.
- Un elemento InputStreamcontenente i dati KML.
- Un oggetto Context, necessario per aprire risorse locali.
Kotlin
val inputStream: InputStream? = // InputStream containing KML data val layer = KmlLayer(map, inputStream, context)
Java
InputStream inputStream = // InputStream containing KML data KmlLayer layer = new KmlLayer(map, inputStream, context);
Dopo aver creato un KmlLayer, chiama
  addLayerToMap()() per aggiungere i dati importati alla mappa.
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
Cancellare un livello KML
Supponiamo che tu abbia creato questo KmlLayer:
Kotlin
val inputStream: InputStream? = // InputStream containing KML data val layer = KmlLayer(map, inputStream, context)
Java
InputStream inputStream = // InputStream containing KML data KmlLayer layer = new KmlLayer(map, inputStream, context);
Per rimuovere il livello dalla mappa, chiama removeLayerFromMap():
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
Accedere ai contenitori KML
Per accedere ai container che sono stati aggiunti al livello,
  puoi chiamare getContainers() sul livello che hai creato.
  Per verificare se un container ha container nidificati, puoi chiamare
  hasContainers(). Per accedere a questi container nidificati, in modo simile
  cosa puoi fare nel tuo livello, puoi richiamare
  getContainers()
Per accedere ai contenitori che non sono nidificati in un KmlLayer
  o KmlContainer:
Kotlin
for (containers in layer.containers) { // Do something to container }
Java
for (KmlContainer containers : layer.getContainers()) { // Do something to container }
Per accedere ai contenitori che sono nidificati in un KmlLayer
  oppure KmlContainer:
Kotlin
fun accessContainers(containers: Iterable<KmlContainer>) { for (container in containers) { if (container.hasContainers()) { accessContainers(container.containers) } }
Java
public void accessContainers(Iterable<KmlContainer> containers) { for (KmlContainer container : containers) { if (container.hasContainers()) { accessContainers(container.getContainers()); } } }
Accesso a segnaposto KML e overlay al suolo KML
Per accedere a qualsiasi segnaposto o overlay al suolo
  aggiunto al livello, puoi chiamare getPlacemarks() o
  getGroundOverlays() su un livello o un container. Chiamando una delle due opzioni
  restituisce un valore iterabile di KmlPlacemarks
  rispettivamente KmlGroundOverlays.
Ad esempio, per accedere a un oggetto KmlPlacemark da un livello:
Kotlin
for (placemark in layer.placemarks) { // Do something to Placemark }
Java
for (KmlPlacemark placemark : layer.getPlacemarks()) { // Do something to Placemark }
Accedere alle proprietà KML
Per accedere a qualsiasi proprietà in un contenitore o un segnaposto, richiama
  getProperty() e assegnargli una chiave di proprietà. Puoi anche chiamare
  hasProperty() per verificare se esiste. Questo esempio mostra come
  recupera il valore della proprietà "name" da un container, se esistente.
Kotlin
for (container in layer.containers) { if (container.hasProperty("name")) { Log.i("KML", container.getProperty("name")) } }
Java
for (KmlContainer container : layer.getContainers()) { if (container.hasProperty("name")) { Log.i("KML", container.getProperty("name")); } }
Eventi di clic sulla geometria KML
Puoi utilizzare KmlLayer.OnFeatureClickListener() per rimanere in ascolto degli eventi di clic nella
  elementi geometrici sulla mappa. L'esempio seguente registra l'ID di una caratteristica quando l'utente
  fa clic sulla funzionalità:
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i( "KML", "Feature clicked: " + feature.id ) }
Java
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener(new KmlLayer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("KML", "Feature clicked: " + feature.getId()); } });
Guarda l'app demo
Esempio di importazione di un file KML e creazione di un livello
  dai un'occhiata a KmlDemoActivity nell'app demo
  fornito insieme alla libreria di utility. La guida alla configurazione ti mostra come
  per eseguire l'app demo.
Funzionalità supportate da KML
| Elemento KML | Supportato? | Commento | 
|---|---|---|
| <address> | parzialmente | Archiviati come valore di proprietà | 
| <AddressDetails> | no | |
| <Alias> | no | |
| <altitude> | no | |
| <altitudeMode> | no | |
| <atom:author> | no | |
| <atom:link> | no | |
| <atom:name> | no | |
| <BalloonStyle> | parzialmente | solo <text> è supportato | 
| <begin> | N/D | <TimeSpan> non è supportato | 
| <bgColor> | no | |
| <bottomFov> | N/D | <PhotoOverlay> non è supportato | 
| <Camera> | no | |
| <Change> | parzialmente | sono supportate solo le modifiche di stile | 
| <color> | parzialmente | include #AABBGGRR e #BBGGRR; non supportato in <ScreenOverlay> e <GroundOverlay> | 
| <colorMode> | sì | |
| <cookie> | no | <NetworkLinkControl> non supportato | 
| <coordinates> | sì | |
| <Create> | no | |
| <Data> | no | |
| <Delete> | no | |
| <description> | sì | Solo testo normale, nessun contenuto HTML supportato | 
| <displayMode> | no | |
| <displayName> | no | |
| <Document> | sì | |
| <drawOrder> | sì | |
| <east> | sì | |
| <end> | N/D | <TimeSpan> non è supportato | 
| <expires> | no | <NetworkLinkControl> non supportato | 
| <ExtendedData> | parzialmente | <Data> non digitato solo e nessun <SimpleData> o <Schema> e le sostituzioni di entità nel formato$[dataName] non sono supportate. | 
| <extrude> | no | |
| <fill> | sì | |
| <flyToView> | no | <NetworkLinkControl> non supportato | 
| <Folder> | sì | |
| <gridOrigin> | N/D | <PhotoOverlay> non è supportato | 
| <GroundOverlay> | sì | |
| <heading> | sì | |
| <hotSpot> | sì | |
| <href> | sì | |
| <httpQuery> | no | |
| <Icon> | sì | |
| <IconStyle> | sì | |
| <ImagePyramid> | N/D | <PhotoOverlay> non è supportato | 
| <innerBoundaryIs> | sì | implicitamente da <LinearRing> ordine | 
| <ItemIcon> | N/D | <ListStyle> non è supportato | 
| <key> | sì | |
| <kml> | sì | |
| <LabelStyle> | no | |
| <latitudine> | sì | |
| <LatLonAltBox> | no | |
| <LatLonBox> | sì | |
| <leftFov> | N/D | <PhotoOverlay> non è supportato | 
| <LinearRing> | sì | |
| <LineString> | sì | |
| <LineStyle> | sì | |
| <Link> | no | |
| <linkDescription> | N/D | <NetworkLinkControl> non supportato | 
| <linkName> | N/D | <NetworkLinkControl> non supportato | 
| <linkSnippet> | N/D | <NetworkLinkControl> non supportato | 
| <listItemType> | N/D | <ListStyle> non è supportato | 
| <ListStyle> | no | |
| <Location> | N/D | <Model> non è supportato | 
| <Lod> | sì | |
| <longitude> | sì | |
| <LookAt> | no | |
| <maxAltitude> | no | |
| <maxFadeExtent> | no | |
| <maxHeight> | N/D | <PhotoOverlay> non è supportato | 
| <maxLodPixels> | no | |
| <maxSessionLength> | no | |
| <maxWidth> | N/D | <PhotoOverlay> non è supportato | 
| <message> | no | |
| <minAltitude> | no | |
| <minFadeExtent> | no | |
| <minLodPixels> | no | |
| <minRefreshPeriod> | no | <NetworkLink> | 
| <Model> | no | |
| <MultiGeometry> | sì | |
| <name> | sì | |
| <near> | N/D | <PhotoOverlay> non è supportato | 
| <NetworkLink> | no | |
| <NetworkLinkControl> | no | |
| <north> | sì | |
| <open> | sì | Archiviati come valore di proprietà | 
| <Orientamento> | N/D | <Model> non è supportato | 
| <outerBoundaryIs> | sì | implicitamente da <LinearRing> ordine | 
| <outline> | sì | |
| <overlayXY> | no | |
| <Pair> | sì | |
| <phoneNumber> | parzialmente | Archiviati come valore di proprietà | 
| <PhotoOverlay> | no | |
| <Segnaposto> | sì | |
| <Point> | sì | |
| <Polygon> | sì | |
| <PolyStyle> | sì | |
| <range> | sì | |
| <refreshInterval> | no | |
| <refreshMode> | no | |
| <refreshVisibility> | no | |
| <Region> | sì | |
| <ResourceMap> | N/D | <Model> non è supportato | 
| <rightFov> | N/D | <PhotoOverlay> non è supportato | 
| <roll> | N/D | <Camera> e <Model> non sono supportati | 
| <rotation> | sì | |
| <rotationXY> | no | |
| <Scale> | N/D | <Model> non è supportato | 
| <scale> | sì | |
| <Schema> | no | |
| <SchemaData> | no | |
| <ScreenOverlay> | no | |
| <screenXY> | N/D | <ScreenOverlay> non è supportato | 
| <shape> | N/D | <PhotoOverlay> non è supportato | 
| <SimpleData> | N/D | <SchemaData> non sono supportati | 
| <SimpleField> | N/D | <Schema> non sono supportati | 
| <size> | sì | |
| <Snippet> | no | |
| <south> | sì | |
| <state> | N/D | <ListStyle> non è supportato | 
| <Style> | sì | |
| <StyleMap> | parzialmente | Stile evidenziato non fornito. StyleMaps in linea non supportati | 
| <styleUrl> | sì | |
| <targetHref> | no | <Alias> non è supportato | 
| <tessellate> | no | |
| <text> | sì | |
| <textColor> | no | |
| <tileSize> | N/D | <PhotoOverlay> non è supportato | 
| <tilt> | no | |
| <TimeSpan> | no | |
| <TimeStamp> | no | |
| <topFov> | N/D | <PhotoOverlay> non è supportato | 
| <Aggiorna> | N/D | <NetworkLinkControl< non supportato | 
| <value> | sì | |
| <viewBoundScale> | no | |
| <viewFormat> | no | |
| <viewRefreshMode> | no | |
| <viewRefreshTime> | no | |
| <ViewVolume> | N/D | <PhotoOverlay> non è supportato | 
| <visibility> | sì | |
| <west> | sì | |
| <when> | N/D | <TimeStamp> non è supportato | 
| <width> | sì |