Maker Island - El formato GeoJSON y FeatureCollection


En este punto, vamos a considerar que lo que hemos ido realizando es bastante sencillo, pero ahora nos enfrentaremos a la expansión del universo de nuestro mundo Zombie, considerando que si queremos crear un número elevado de Zombies y los tuvieramos que crear de uno en uno, se nos quitarían las ganas rapidamente.

Para ello, vamos a utilizar un concepto inteligente, el formato GeoJSON.

El formato GeoJSON

Este tipo de formato JSON es un modelo de texto ultraligero para el intercambio de datos en el que se pueden incorporar cómo son los objetos de nuestro juego y sus atributos de tal manera que podemos escribir en un archivo y subir a la plataforma de App Inventor.

Este fichero de texto tiene que cumplir con unas especificaciones muy concretas, ya que es un modelo de programación que sirve tanto para exportar como para importar el formato de texto a objetos del juego.

En este caso, el potencial de este modelo se basa en el uso de datos de Geolocalización y esta incorporación se le denomina GeoJSON. Como el desarrollo de este formato es muy avanzado, vamos a explicar una serie de pautas de uso para aplicarlo sobre nuestras aplicaciones.

Para poder aplicar una zona de pruebas sobre un mapa, podemos dirigirnos al siguiente enlace y copiar nuestro texto GeoJSON para visualizar los resultados.

 

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "marker-color": "#7e7e7e",
        "marker-size": "medium",
        "marker-symbol": "",
        "name": "Zomb"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -0.89283227920,
          41.647919529
        ]
      }
    },
 {
      "type": "Feature",
      "properties": {
        "marker-color": "#7e7e7e",
        "marker-size": "medium",
        "marker-symbol": "",
        "name": "SuperZombie"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -0.8906328678131105,
          41.64822818509019
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "marker-color": "#7e7e7e",
        "marker-size": "medium",
        "marker-symbol": "",
        "name": "Zombie"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -0.8909547328948976,
          41.649017855186635
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "marker-color": "#7e7e7e",
        "marker-size": "medium",
        "marker-symbol": "",
        "name": "ZombieBoy"
      },
      "geometry": {
        "type": "Point",
        "coordinates": [
          -0.8945703506469727,
          41.6551184318944
        ]
      }
    }
  ]
}

Con este pequeño modelo de ejemplo, nuestro interés está en la creación del modelo FeatureCollection que vamos a explicar a continuación.

 

¿Qué es FeatureCollection?

Si nos fijamos en nuestro modelo de aplicación, podremos observar, que los elementos de mapa, se incluyen de forma jerarquica sobre el mapa. Cada uno de los elementos que existen en la jerarquía de mapa se le denomina Feature.

Un Feature es un elemento de geolocalización que puede ser un marcador, una linea, un polígono, un área, etc...

Nosotros solamente trabajaremos con marcadores, pero podríamos extender su uso, usando el mismo formato GeoJSON que nos convenga.

FeatureCollection es un conjunto jerarquizado en el que dentro del mapa, integraremos un conjunto de elementos de una categoría concreta. Por ejemplo, queremos hacer una lista de Zombies en nuestra aplicación, así que crearemos un conjunto de marcadores que representen a estos Zombies dentro de una colección de marcadores que lo compondrá este FeatureCollection.

Así pues, podemos crear otro FeatureCollection, que en vez de ser todos Zombies, pueden ser Hospitales para curarnos y aumentar nuestras vidas.

Estos conjuntos nos permiten por un lado, poder manipularlos en un formato de bucle, pero además actuar sobre el conjunto, en lugar de hacerlo individualmente.

Las opciones de integración dentro del módulo FeatureCollection son las siguientes.

  • FeaturesFromGeoJSON - Se puede escribir el formato mediante texto.
  • Source - Se accede al texto a través de un archivo.
  • From URL - Este modelo es el que explicaremos a través de nuestra interfaz.

 

Interfaz Maker Island

A través de nuestra página podemos crear estos formatos GeoJSON de manera personalizada y crear una URL que nos defina el código de creación de los elementos de nuestra aplicación.