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 GeoJSON para Google Maps en Android

  1. Introducción
  2. Agregar un GeoJsonLayer a tu mapa
  3. Eliminar el GeoJsonLayer
  4. Agregar y eliminar un GeoJsonFeature
  5. Acceder a GeoJsonFeatures y a sus propiedades
  6. Aplicar ajustes de estilo a GeoJsonLayer y GeoJsonFeature
  7. Ver la aplicación de demostración

Introducción

GeoJSON es una extensión del formato de datos JSON y representa datos geográficos. Con esta utilidad, puedes almacenar funciones geográficas en formato GeoJSON y representarlas como una capa sobre el mapa. Para agregar tus datos de GeoJSON al mapa y eliminarlos de él, llama a addLayer() y clearLayer() respectivamente. Asimismo, puedes agregar y eliminar funciones individuales llamando a addFeature() y removeFeature(), y pasando un objeto GeoJsonFeature. Si deseas acceder a las funciones, puedes llamar a getFeatures() para obtener un elemento iterable de todos los objetos GeoJsonFeature que se agregaron a la capa.

También puedes configurar estilos predeterminados que deben aplicarse a funciones antes de agregarlas a la capa llamando a getDefaultPointStyle(), getDefaultLineStringStyle() o getDefaultPolygonStyle() y configurando opciones de estilo en cada uno. También puedes configurar el estilo para un GeoJsonFeature individual llamando a setPointStyle(), setLineStringStyle() o setPolygonStyle() en la función y pasando el objeto de estilo correspondiente.

Agregar un GeoJsonLayer a tu mapa

Para agregar una capa GeoJson al mapa, primero crea una instancia de una clase GeoJsonLayer. Existen dos maneras de crear instancias de GeoJsonLayer.

Para importar un JSONObject, necesitarás lo siguiente:

  • un objeto GoogleMap en el cual se deba representar la capa
  • un objeto JSONObject con los datos de GeoJSON que deben agregarse a la capa
GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

Para realizar importaciones de un archivo JSONObject local, necesitarás lo siguiente:

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

Después de crear el GeoJsonLayer, llama a addLayer() para agregar los datos importados al mapa:

layer.addLayer();

Eliminar el GeoJsonLayer

Supongamos que agregaste la siguiente capa:

GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

Para eliminar GeoJsonLayer, llama a clearLayer()

layer.clearLayer();

Agregar y eliminar un GeoJsonFeature

En GeoJSON, una función tiene el tipo “feature”. Contiene una geometría, un miembro de propiedad y, opcionalmente, un cuadro de límite o un id.

Puedes crear objetos GeoJsonFeature de manera individual y agregarlos a GeoJsonLayer.

Supongamos que creaste una función que contiene un punto en 0 y 0 en una entrada en sus propiedades, y que no contiene ningún cuadro de límite.

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);

Si deseas agregar la función a la capa, llama a addFeature() y pasa la función que deseas agregar.

layer.addFeature(pointFeature);

Si deseas eliminar la función después de agregarla a la capa, llama a removeFeature() y pasa la función para eliminarla.

layer.removeFeature(pointFeature);

Acceder a GeoJsonFeatures y a sus propiedades

Para acceder a todos los objetos GeoJsonFeature agregados a la capa, puedes llamar a getFeatures() en el GeoJsonLayer que creaste. Con esto se devolverá un elemento iterable de GeoJsonFeature al cual puedes acceder usando un bucle individual, como se muestra a continuación.

for (GeoJsonFeature feature : layer.getFeatures()) {
  // do something to the feature
}

Usa los métodos hasProperty() y getProperty() junto con el método getFeatures() para verificar si cada función almacenada tiene una propiedad en particular y acceder a ella si existe.

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);
for (GeoJsonFeature feature : layer.getFeatures()) {
  if (feature.hasProperty(“Ocean”)) {
    String oceanProperty = feature.getProperty(“Ocean”);
  }
}

Aplicar ajustes de estilo a GeoJsonLayer y GeoJsonFeature

Puedes configurar estilos predeterminados para una clase GeoJsonLayer o aplicar ajustes de estilo a funciones individuales en la capa.

Estilos predeterminados

En una clase GeoJsonLayer, puedes configurar estilos predeterminados para puntos, LineString y polígonos que se agregan a la capa. Los estilos predeterminados solo se aplican si la función no tiene configurado un estilo para sus geometrías. Los cambios que realices en el estilo predeterminado también se reflejan en todas las funciones que usen dicho estilo.

Los pasos para aplicar un estilo predeterminado son los siguientes:

  1. recuperar el objeto de estilo predeterminado. Puede ser GeoJsonPointStyle, GeoJsonLineStringStyle o GeoJsonPolygonStyle;
  2. aplicar tus opciones deseadas al estilo.

En el siguiente ejemplo de código se muestra la manera de modificar el estilo de punto predeterminado que permitirá arrastrar puntos con un título y un fragmento de código.

GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle(“Hello, World!”);
pointStyle.setSnippet(“I am a draggable marker”);

Estilos específicos de una clase GeoJsonFeature

También puedes aplicar ajustes de estilo a funciones individuales en la capa. Los pasos para aplicar un estilo en una clase GeoJsonFeature son los siguientes:

  1. crear el objeto de estilo correspondiente. Puede ser GeoJsonPointStyle, GeoJsonLineStringStyle o GeoJsonPolygonStyle;
  2. aplicar tus opciones deseadas al estilo;
  3. pasar el objeto de estilo al método correspondiente en la clase GeoJsonFeature. Puede ser setPointStyle(), setLineStringStyle() o setPolygonStyle()

De la siguiente manera, por ejemplo, se puede personalizar el estilo de LineString para GeoJsonFeature de modo que su color sea rojo.

// Create a new feature containing a linestring
ArrayList<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);

Ver la aplicación de demostración

Para hallar un ejemplo de la importación de un archivo GeoJSON de una URL y la creación de una capa a partir de este, observa GeoJsonDemoActivity 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.

Enviar comentarios sobre...

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