Eso es todo.

Para comenzar a desarrollar, consulta nuestra documentación para desarrolladores.

Activar la Google Maps Android API

Para que puedas comenzar, te proporcionaremos orientación en la Google Developers Console a fin de que hagas primero algunas acciones:

  1. Crear o seleccionar un proyecto
  2. Activar la Google Maps Android API
  3. Crear claves correspondientes
Continuar

Utilidad de importación de KML de Google Maps

  1. Introducción
  2. Agregar una capa KML
  3. Borrar una capa KML
  4. Acceder a contenedores KML
  5. Acceder a marcas de posición KML y superposiciones de suelo KML
  6. Acceder a propiedades de KML
  7. Funciones admitidas por KML

Introducción

KML es una extensión del formato de datos XML y representa datos geográficos en un mapa. Con esta utilidad, puedes convertir objetos KML en formas geográficas y representarlas como una capa sobre el mapa. Para agregar tus datos de KML al mapa y eliminarlos de él, llama a addLayerToMap() y removeLayerFromMap() respectivamente. Para acceder a propiedades de un objeto KML llama a getProperties() en cualquier Placemark, GroundOverlay, Document o Folder.

Agregar una capa KML al mapa

Para agregar una capa de datos al mapa, primero crea una instancia de la clase KmlLayer. Existen dos maneras de crear instancias de KmlLayer.

Para importar y representar un conjunto de datos de KML a partir de un recurso local, necesitas:

  • un objeto GoogleMap en el cual se deba representar la capa;
  • un archivo de recursos local que contenga los datos de KML;
  • un objeto Context, que se necesita para abrir un archivo de recursos local.
KmlLayer layer = new KmlLayer(getMap(), R.raw.kmlFile, getApplicationContext());

Para importar y representar un conjunto de datos de KML a partir de un flujo local, necesitas:

  • un objeto GoogleMap en el cual se deba representar la capa;
  • una clase InputStream que contenga los datos de KML;
  • un objeto Context, que se necesita para abrir recursos locales.
KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

Después de crear una clase KmlLayer, llama a addLayerToMap()() para agregar los datos importados al mapa.

layer.addLayerToMap();

Borrar una capa KML

Supongamos que creaste la siguiente KmlLayer:

KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());
 

Para eliminar la capa del mapa, llama a removeLayerFromMap():

layer.removeLayerFromMap();

Acceder a contenedores KML

Para acceder a cualquier contenedor que haya sido agregado a tu capa, puedes llamar a getContainers() en la capa que creaste. Para verificar si un contenedor tiene contenedores anidados, puedes llamar a hasContainers(). Para acceder a estos contenedores anidados, algo similar a lo que puedes hacer en tu capa, puedes llamar a getContainers().

Para acceder a contenedores que no estén anidados en una clase KmlLayer o KmlContainer:

for (KmlContainer containers : layer.getContainers())
  // Do something to container
}

Para acceder a contenedores que estén anidados en una clase KmlLayer o KmlContainer:

Iterable containers = layer.getContainers();
  public void accessContainers(containers) {
    for (KmlContainer container : containers ) {
    // Do something to container
    if (container.hasContainers()) {
      accessContainers(container.getContainers());
    }
  }
}

Acceder a marcas de posición KML y superposiciones de suelo KML

Para acceder a cualquier marca de posición o superposición de suelo agregadas a la capa, puedes llamar a getPlacemarks() o getGroundOverlays() en una capa o contenedor. Al llamar a cualquiera de estos se devolverá un elemento iterable de KmlPlacemarks o KmlGroundOverlays respectivamente.

Por ejemplo, para acceder a objetos KmlPlacemark desde una capa:

for (KmlPlacemark placemark : layer.getPlacemarks()) {
  // Do something to Placemark
}

Acceder a propiedades de KML

Para acceder a cualquier propiedad de un contenedor o una marca de posición, llama a getProperty() y asígnale una clave de propiedad. También puedes llamar a hasProperty() para verificar si existe. En el ejemplo siguiente se muestra la manera de recuperar el valor de propiedad “name” de un contenedor, si existe.

for (KmlContainer container : layer.getContainers()) {
  if (container.hasProperty("name")) {
    System.out.println(container.getProperty("name")):
  }
}

Ver la aplicación de demostración

Para hallar un ejemplo de la importación de un archivo KML de la creación de una capa a partir de este, observa KmlDemoActivity en la aplicación de demostración que se incluye con la biblioteca de utilidades. En la guía de configuración podrás ver la manera de ejecutar la aplicación de demostración.

Funciones admitidas por KML

Elemento KML ¿Compatible? Comentario
<address> parcialmente Se almacena como valor de propiedad.
<AddressDetails> No
<Alias> No
<altitude> No
<altitudeMode> No
<atom:author> No
<atom:link> No
<atom:name> No
<BalloonStyle> Parcialmente Solo es compatible <text>.
<begin> N/D <TimeSpan> no es compatible.
<bgColor> No
<bottomFov> N/D <PhotoOverlay> no es compatible.
<Camera> No
<Change> Parcialmente Solo se admiten cambios de estilo.
<color> Parcialmente Incluye #AABBGGRR y #BBGGRR; no es compatible en <ScreenOverlay> ni <GroundOverlay>.
<colorMode>
<cookie> No <NetworkLinkControl> no es compatible.
<coordinates>
<Create> No
<Data> No
<Delete> No
<description> Solo texto sin formato. No se admite contenido HTML.
<displayMode> No
<displayName> No
<Document>
<drawOrder>
<east>
<end> N/D <TimeSpan> no es compatible.
<expires> No <NetworkLinkControl> no es compatible.
<ExtendedData> Parcialmente Solo <Data> sin tipo. No se admiten <SimpleData>, <Schema> ni reemplazos de entidades con form$[dataName].
<extrude> No
<fill>
<flyToView> No <NetworkLinkControl> no es compatible.
<Folder>
<gridOrigin> N/D <PhotoOverlay> no es compatible.
<GroundOverlay>
<heading>
<hotSpot>
<href>
<httpQuery> No
<Icon>
<IconStyle>
<ImagePyramid> N/D <PhotoOverlay> no es compatible.
<innerBoundaryIs> Implícitamente, a partir del orden <LinearRing>.
<ItemIcon> N/D <ListStyle> no es compatible.
<key>
<kml>
<LabelStyle> No
<latitude>
<LatLonAltBox> No
<LatLonBox>
<leftFov> N/D <PhotoOverlay> no es compatible.
<LinearRing>
<LineString>
<LineStyle>
<Link> No
<linkDescription> N/D <NetworkLinkControl> no es compatible.
<linkName> N/D <NetworkLinkControl> no es compatible.
<linkSnippet> N/D <NetworkLinkControl> no es compatible.
<listItemType> N/D <ListStyle> no es compatible.
<ListStyle> No
<Location> N/D <Model> no es compatible.
<Lod>
<longitude>
<LookAt> No
<maxAltitude> No
<maxFadeExtent> No
<maxHeight> N/D <PhotoOverlay> no es compatible.
<maxLodPixels> No
<maxSessionLength> No
<maxWidth> N/D <PhotoOverlay> no es compatible.
<message> No
<minAltitude> No
<minFadeExtent> No
<minLodPixels> No
<minRefreshPeriod> No <NetworkLink>
<Model> No
<MultiGeometry>
<name>
<near> N/D <PhotoOverlay> no es compatible.
<NetworkLink> No
<NetworkLinkControl> No
<north>
<open> Se almacena como valor de propiedad.
<Orientation> N/D <Model> no es compatible.
<outerBoundaryIs> Implícitamente, a partir del orden <LinearRing>.
<outline>
<overlayXY> No
<Pair>
<phoneNumber> Parcialmente Se almacena como valor de propiedad.
<PhotoOverlay> No
<Placemark>
<Point>
<Polygon>
<PolyStyle>
<range>
<refreshInterval> No
<refreshMode> No
<refreshVisibility> No
<Region>
<ResourceMap> N/D <Model> no es compatible.
<rightFov> N/D <PhotoOverlay> no es compatible.
<roll> N/D <Camera> y <Model> no son compatibles.
<rotation>
<rotationXY> No
<Scale> N/D <Model> no es compatible.
<Scale>
<Schema> No
<SchemaData> No
<ScreenOverlay> No
<screenXY> N/D <ScreenOverlay> no es compatible.
<shape> N/D <PhotoOverlay> no es compatible.
<SimpleData> N/D <SchemaData> no es compatible.
<SimpleField> N/D <Schema> no es compatible.
<size>
<Snippet> No
<south>
<state> N/D <ListStyle> no es compatible.
<Style>
<StyleMap> Parcialmente No se proporciona el estilo de resalte. StyleMaps integrado no es compatible.
<styleUrl>
<targetHref> No <Alias> no es compatible.
<tessellate> No
<text>
<textColor> No
<tileSize> N/D <PhotoOverlay> no es compatible.
<tilt> No
<TimeSpan> No
<TimeStamp> No
<topFov> N/D <PhotoOverlay> no es compatible.
<Update> N/D <NetworkLinkControl> no es compatible.
<value>
<viewBoundScale> No
<viewFormat> No
<viewRefreshMode> No
<viewRefreshTime> No
<ViewVolume> N/D <PhotoOverlay> no es compatible.
<visibility>
<west>
<when> N/D <TimeStamp> no es compatible.
<width>

Enviar comentarios sobre...

Google Maps Android API
Google Maps Android API
Si necesitas ayuda, visita nuestra página de asistencia.