lunes, 23 de abril de 2018

La Geolocalización se ha convertido en un bien de consumo


localizador GPS para personas

El otro día un compañero de trabajo me contó un episodio que me ha hecho reflexionar sobre cómo nuestro trabajo, el de cartógrafos modernos, ha influído favorablemente en la sociedad, y sobre cómo la geolocalización se ha convertido en un bien o servicio de consumo más.

Si esto no lo teníamos ya claro, con la proliferación de terminales móviles con GPS incorporado, el siguiente ejemplo es muy representativo de cómo los rastreadores GPS para personas pueden facilitar el cuidado de personas dependientes.

El padre de mi amigo, de 85 años, y con múltiples problemas de salud de todo tipo, decidió salir a pasear al campo, para recoger espinacas y acelgas.  Éste ha sido un año de bastantes lluvias por Andalucía, y hay muchos y buenos lugares donde encontrar acelgas silvestres, que suelen brotar a los lados de los caminos.

Con la testarudez propia de la edad, y de las personas a las que el físico ya no acompaña a una mente lúcida, tomó una decisión que de lúcida tenía bastante poco: salió solo, no le dijo nada a nadie y, por supuestísimo, no llevaba consigo ese cacharo infame que es el teléfono móvil que solo sirven para que le tengan controlado.

Y sucedió lo que tenía que pasar, pues Murphy no se toma días libres. Estando agachado para recoger una saludable planta silvestre comestible, se cayó con tan mala fortuna que ya no pudo levantarse. Además, cayó en un margen del camino donde había vegetación alta, de tal forma que no se le veía tirado en el suelo hasta que no estabas muy próximo a él.

Finalmente el desenlace fue feliz, y un caminante que pasaba por allí lo vió caído y llamó una ambulancia. Pero mi compañero se quedó con el susto en el cuerpo, y empezó a buscar alguna solución para tener a su padre "geolocalizado", asumiendo que a estas alturas de la vida su padre no iba a "escuchar los consejos que le estaba haciendo el niño este".

Lo primero que se me pasó por la cabeza fue "¿por qué no le regalas un teléfono móvil?", pero yo mismo he experimentado, con el abuelo de mi mujer, que falleció con 99 años, lo difícil que puede ser convencer a una persona mayor de hacer algo que no quiere hacer. El padre de mi compañero no quería ni oir hablar de teléfonos móviles.

Así que buscando información por Internet, vimos que existía todo un mercado de electrónica de consumo alrededor de los localizadores para personas (también utilizados para localizar mascotas).

Y es que, cuando se trata de encontrar a un ser querido que puede estar en problemas, la localización no es un componente más de la información, es la información. Seguidamente hago una review de los principales localizadores de niños, ancianos o mascotas que puedes encontrar hoy en día en el mercado, así como de las diferentes tecnologías sobre las que se basan.

Localizadores anti-pérdida basados en Bluetooth.

Los localizadores anti-pérdida basados en la tecnología bluetooth son el modelo más sencillo de rastreador de personas.

Realmente, están más pensados para tener siempre localizados objetos cuya pérdida o robo se quiere evitar, como unas llaves o una cartera, que que para emplear como un localizador de personas. 

Su funcionamiento es muy simple: el rastreador Bluetooth se "empareja" con un teléfono móvil, tablet o smart watch, y si en algún momento el teléfono pierde la señal del rastreador, empezará a sonar una alerta sonora de alarma.






Este funcionamiento es el mismo para todos los rastreadores bluetooth, costando los modelos básicos menos de 2 euros. A partir de ahí, cuanto mayor sea la calidad del localizador bluetooth, más funcionalidades ofrecerá. Así, por ejemplo, el siguiente modelo está ligado a una app móvil que ofrece un mayor número de funcionalidades, como activar una alarma sonora en el rastreador, y no en el teléfono. Esto es muy útil si se te caen las llaves en un jardín, por ejemplo.






Sin embargo, el principal inconveniente de la tecnología bluetooth, que la hace inadecuada para localizar niños, personas ancionas o mascotas, es su limitado alcance. Las últimas versiones de bluetooth (4.0) tienen un radio de acción de 10 metros lineales como máximo. Si el padre de mi amigo llevase en su llavero este rastreador, no podría ni cambiar de habitación.

CONCLUSIÓN: Los rastreadores bluetooth son más dispositivos anti-robo o anti-pérdida que localizadores de personas.

Localizadores de personas con GPS y tarjeta SIM.


Frente a los rastreadores anti-robo, que como hemos visto nos avisan cuando un objeto dotado de chip bluetooth escapa del alcance del terminal móvil con el que está emparejado, los localizadores GPS para niños, ancianos o mascotas rastrean la posición de su portador en todo momento.

Para ello, estos dispositivos están dotados de un chip GPS, lo que los hace más caros, pero también mucho más fiables, y de una bateria de gran capacidad para su tamaño (sobre los 1.000 mA), que asegure una autonomía de funcionamiento sin recarga de entre 1 y 2 meses.

La clave de su funcionamiento se encuentra en la tarjeta SIM. Gracias a esta tarjeta, el localizador GPS se conecta con la red de telefonía móvil, y envía su posición a un servidor remoto. Este servidor suele ser un servicio en la nube provisto por el fabricante del rastreador GPS, que recibe además de la posición capturada por el GPS los datos de la cuenta de usuario del portador del localizador.

Así, desde el otro lado, el cuidador (ya sea familiar al cuidado del anciano, padres del niño o propietario de la mascota) puede conectarse a este mismo servicio en la nube, para consultar la ubicación del portador del localizador GPS.




A partir de este funcionamiento básico, los fabricantes de GPS localizadores de personas ofrecen funcionalidades adicionales, como por ejemplo:
  • "vallado geográfico" (geofencing), de tal forma que el cuidador delimita sobre una web las "vallas" o barreras que no debe atravesar el portador del localizador GPS, de tal forma que si las atraviesa envía una alarma.
  • Alerta de caída, que envía un mensaje si detecta que el niño o anciano se ha caído (¡A mi amigo le hubiera venido genial!).
  • Alarmas de batería baja, para evitar que el localizador se apague en una situación embarazosa.
  • Botón de socorro o "SOS". Algunos localizadores tienen este botón, de tal forma que si el niño se pierde, al pulsar el botón el localizador enviará su posición al servidor de rastreo, que a su vez enviará un mensaje de aviso con la posición del niño o anciano a la persona cuidadora. 
 

Localizador GPS Trackimo TRKM002-00108.

A la hora de elegir un localizador GPS para personas basado en la conectividad mediante tarjetas SIM, no solo hay que tener en cuenta las funcionalidades de la aplicación móvil proporcionada por el fabricante, sino también la calidad de cobertura de red de la compañía telefónica que nos ha vendido la tarjeta SIM, y también sus costes derivados.




Como servicio de valor añadido, algunos fabricantes proporcionan un paquete "todo en uno", en el que se adquiere no solo el localizador GPS, sino también la tarjeta SIM, con acceso a datos de operadores de telefonía durante un periodo de tiempo determinado.

Tal es el caso, por ejemplo, del localizador GPS para personas "Trackimo TRKM002-00108".

https://amzn.to/2Hk424V
En el precio del producto va incluido una tarjeta SIM, con conexión a una red móvil de cobertura mundial, incluyendo los derechos de roaming en cualquier país del mundo (no solo la Unión Europea), durante un año. Transcurrido el primer año, es necesario pagar unos 49 euros al año por la conexión a la red  móvil concertada por el fabricante.

Reloj localizador GPS para ancianos y niños.



 Con la expansión de los dispositivos wearables, los relojes localizadores GPS para ancianos y niños suponen el nexo de unión entre esta tecnología de dispositivos móviles y la tecnología de localización y rastreo de personas.

Los relojes localizadores son más versátiles, puesto que pueden llegar a incluir todas las funciones de un smart watch, pero también más pesados que un rastreador GPS móvil. Al tener una electrónica más compleja, un reloj localizador GPS para ancianos y niños permite que, por ejemplo, el botón SOS establezca una conversación o una llamada telefónica con el cuidador.

Localizadores GPS para mascotas.

Por último, y con la lógica adaptación ergonómica que una mascota requiere, otro producto basado en la geolocalización que se ha convertido en bien de consumo general son los localizadores GPS para gatos y perros.


 https://amzn.to/2vE6g9D


 El funcionamiento de los collares localizadores GPS para mascotas es el mismo que el del resto de localizadores GPS con tarjeta SIM. El dispositivo funciona con un chip GPS y una tarjeta SIM., mediante la que se conecta a una red móvil.

Con un intervalo de tiempo preestablecido, o bien bajo demanda del dueño del animal, el collar localizador envía su posición a un servidor, con el que se conecta el amo para ver la ubicación de la mascota.

CONCLUSIÓN.

Hace poco mantenía una conversación con algunos colegas de profesión sobre el futuro de la profesión del cartógrafo. Ellos sostenían que en el momento de la historia en el que más auge tiene la geolocalización, con la popularización de los teléfonos móviles y los terminales GPS, la profesión de cartógrafo está a punto de desaparecer.

Yo les argumentaba que no estaba de acuerdo, y que los cartógrafos están más vivos que nunca. Simplemente, la profesión se ha transformado. Un cartógrafo yo no se dedica a compilar mapas, ni trabaja con tabletas digitalizadoras.

La cartografía se ha popularizado, y se ha convertido en un bien de consumo. Y en torno a esta están surgiendo un gran número de dispositivos, de gadgets, y de servicios de informacíon.

El dónde ya no es un añadido, es un componente fundamental de la información. Conocer la localización de nuestros seres queridos, de las personas de las que tenemos responsabilidades como pueden ser nuestros mayores o nuestros pequeños nos da gran tranquilidad, y mejora nuestra calidad de vida.

Hace 50 años era impensable que alguien pudiese pagar 40 euros al año por tener siempre a su hijo pequeño localizado mediante su reloj. Los técnicos que han diseñado este servicio basado en la localización (LBS) son los cartógrafos del siglo XXI, son cartógrafos digitales.





martes, 25 de abril de 2017

Viajes a medida por Europa


¿Por qué elegir Europa como nuestro destino para viajes de aventura organizados a medida?

La primera respuesta es sencilla, por la seguridad que nos ofrece y por la avanzada infraestructura turística con la que cuenta. Con una de las tasas más bajas de delincuencia del mundo y con la red de transporte más desarrollada del planeta, con trasportes por carretera, tren, barco, avión a cualquier punto del continente y en la mayoría de casos sin fronteras, sin visados y con plenos derechos como ciudadano de la Unión Europea y con un marco jurídico incomparable que nos permite viajar con tranquilidad por toda Europa como si nos encontráramos en nuestro propio país.

La vasta extensión de territorio que se extiende de norte a sur y de este a oeste nos deja claro la variedad de climas, ecosistemas, relieves y culturas que podemos encontrar dentro del marco geográfico europeo, desde los gélidos y espectaculares fiordos noruegos en el norte, cerca del círculo polar, hasta las playas de arena blanca y sol radiante de la costa onubense del sur de España.

Desde las Islas Madeiras portuguesas en pleno océano atlántico, hasta el oeste hasta las antiguas exrepúblicas soviéticas ahora convertidas en unos estados miembros más de la Unión Europea.

Si además eres un amante del turismo activo y de aventura, en Europa encontraremos una extensa oferta para realizar este tipo de turismo, con todo lo que necesites y en condiciones óptimas de seguridad.

Existen multitud de agencias de viajes especializadas en Europa, sin embargo, solo unas pocas de las que encontramos online se encargan de organizarnos un viaje a medida relacionado con el turismo activo y de aventura.

Debido a las características particulares del turismo activo y de los viajes a medida, existen una serie de cuestiones que todo viajero debe plantearse a la hora de organizar su viaje, o más bien a la hora de elegir al profesional o al equipo de profesionales que se encargará de organizar nuestro viaje.

A continuación, te explicamos algunas claves:

  • Debemos elegir a una agencia que tenga experiencia y conozca bien los destinos a los que nos dirigimos y el tipo de actividad o actividades que pretendemos desarrollar una vez lleguemos.

  • Es recomendable elegir a una agencia que disponga de personal cualificado capaz de comunicarse en nuestro idioma y a poder ser autóctono del país al que viajaremos.

  • También es importante contar con una persona de contacto de la agencia en el propio destino al que viajemos, de forma que podamos obtener su ayuda fácilmente en el caso de que surgiera algún tipo de problema.

  • Desconfía de los chollos, organizar un viaje a medida por Europa para hacer turismo activo, implica una serie de costes si queremos que nuestro viaje sea un éxito y no encontrarnos con sorpresas inesperadas.

En lo que se refiere a los viajes a medida por Europa, sin duda una de las mejores alternativas es senderismoeuropa.com.

Se trata de una agencia de viajes online especializada en la organización de viajes a medida por Europa, principalmente viajes de aventura, para hacer deportes en plena naturaleza.

Sus especialidades son el senderismo y trekking pero también ofrecen rutas en bicicleta de montaña, escalada, espeleología, descenso de ríos y viajes para la observación de Aves.

Su destino principal y sobre el que más rutas han organizado es Bulgaria y la zona de los Balcanes.

 Si prefieres viajar por libre, te recomiendo que utilices nuestras aplicaciones para Android "Rutas Senderismo" y "Rutas MTB".

Captura de pantalla en un móvil Android de la app Rutas Senderismo, con miles de rutas por Europa


Europa es un continente muy completo que con la ayuda de los profesionales adecuados puedes satisfacer las necesidades de ver nuevos lugares y de vivir aventuras de todo tipo de viajeros.

martes, 4 de octubre de 2016

SQL Espacial y PostGIS para apps móviles

SQL Espacial para aplicaciones móviles

El SQL espacial es la base para desarrollar aplicaciones basadas en la localización, que permitan a sus usuarios consultar elementos que se encuentren a su alrededor, o cerca de un lugar, expresado éste por su nombre (París, Parque Nacional de Ordesa, Francia, etc). Recientemente hemos publicado varias aplicaciones Android que precisamente hacen uso del SQL espacial.

En estas aplicaciones, como por ejemplo en "Rutas MTB", los usuarios pueden realizar dos tipos de búsquedas relacionadas con la localización:
  • Búsqueda "Cerca de tí".
  • Búsqueda de "elementos cerca de una referencia geográfica".
Antes de ver el detalle de como implementar estas búsquedas con SQL, hay que hacer una aclaración: los datos a consultar residen en un servidor. Desde la app móvil se envían peticiones a un servicio web que reside en el servidor, y éste es el que hace las consultas a la base de datos y envía a las aplicaciones el resultado en formato JSON.

La otra alternativa (datos en el móvil) haría que el tamaño de la aplicación para su descarga fuese excesivo.


Captura de pantalla de la app "Rutas Senderismo" de la búsqueda por referencia geográfica.

SQL para implementar la búsqueda "Cerca de tí".

Esta consulta es la más sencilla, pues tan solo necesitamos tener nuestros datos en una tabla, y que ésta tenga una columna geométrica. Supongamos que esta tabla se llame MAPAS, y la columna geométrica GEOMETRY. Nuestra posición nos la proporciona el dispositivo móvil (ya sea en Java, Javascript, o cualquier otra plataforma de desarrollo para dispositivos móviles). 
Si el GPS nos da la posición latitud = 41, longitud = 1, la consulta que se ejecutaría en el servidor sería:

SELECT  t.TITLE, t.DESCRIPTION, FROM MAPAS AS t WHERE MBRIntersects( t.GEOMETRY, GeomFromText('POLYGON((1 41, 1 41, 1 41, 1 41,  1 41))') 

Tan simple como una operación MBRIntersects entre la geometría de nuestros datos, y una geometría construída "al vuelo" con la coordenada que nos ha dado nuestro GPS.
 

SQL para implementar la búsqueda de "elementos cerca de una referencia geográfica".


En este caso, además de la tabla con los datos principales (MAPAS), necesitamos tener una tabla con la referencias geográficas (topónimos) que se vaya a usar como referencia. Para cada referencia geográfica, esta tabla tiene que tener un nombre (por ejemplo: Sevilla (España), Estados Unidos, Parque Nacional de Ordesa, etc), y una geometría. Por ejemplo, GEOGRAPHIC_REFERENCES, NAME y GEOMETRIA.

El proceso para realizar la búsqueda es muy simple: a partir del texto introducido por el usuario, localizamos la referencia geográfica que casa con dicho texto, cogemos su geometría, y hacemos una búsqueda espacial cruzando las dos capas.

El SQL que expresa estas condiciones es el siguiente:

SELECT SQL_CALC_FOUND_ROWS X.* FROM (SELECT  t.TITLE, t.DESCRIPTION FROM MAPAS AS t JOIN GEOGRAPHIC_FILTER AS g ON MBRIntersects( t.GEOMETRIA, g.GEOMETRIA )  WHERE g.name = 'Madrid' ) AS X


Es decir, hacemos una operación JOIN SQL entre las dos tablas (la de los datos y la de las referencias geométricas), usando como condición de unión que intersecten sus geometrías (ON MBRIntersects(g1,g2) ) y luego filtramos los resultados por el texto de búsqueda (WHERE g.name = "Madrid").

En este enlace podemos ver un ejemplo de esta consulta en funcionamiento, localizando rutas de mountain bike en el entorno de Barcelona (España)

Si queréis probar como funciona en la aplicación, podéis instalar alguna de las siguientes aplicaciones:

Rutas MTB

Rutas Senderismo

martes, 17 de mayo de 2016

El infierno de los campos TEXT en MySQL

¡CUIDADO CON LOS CAMPOS TEXT / BLOB en MySQL!

Esta semana nos hemos dado bastantes estocazos contra la pared por culpa de los campos Text en MySQL. El principal motivo es que MySQL no los carga en  memoria, de tal forma que si una consulta tiene tablas con campos Text, MySQL accede a disco para manipular cada una de las filas. Esto ralentiza mucho ciertas operaciones, además de que consume muchísima CPU.

La cosa se hace mucho más grave si encima en la consulta no hacemos uso de esos campos. ¡A MySQL le da igual! Si la tabla tiene campos Text, le da igual que tu no los vayas a manipular en tu consulta. Esto es así porque en la estructura interna de datos que emplea para manejar los registros de una tabla, si ésta tiene campos Text no almacena el valor del campo, sino un puntero a un recurso a disco. Es como si el campo Text fuera un fichero, y MySQL en sus registros internos lo que almacena es la URL / Path del fichero.

Ejemplos de este tipo podemos encontrar muchos:
  • Un sistema de blogging, en el que el contenido de los posts lo tengamos en campos Text, mientras que los metadatos (autor, fecha de creación, categoría de contenido) en campos estructurados.
  • etc

Moraleja: A la hora de diseñar tu tabla, si junto con los campos Text tienes otro tipo de campos, que vayas a utilizar de forma independiente, separalos en tablas distintas. Optimizarás mucho las operaciones que no involucren campos Text, hasta tal forma que te compensará hacer un JOIN cuando sí lo involucren.


martes, 7 de octubre de 2014

Textos completos en JQuery Mobile

Por defecto, cuando el framework Jquery Mobile detecta que un texto excede del tamaño reservado de la barra de título, lo recorta y pone unos puntos suspensivos.

Para evitar esto, hay que modificar el estilo CSS del emento html utilizado para el título, añadiendo la propiedad white-space:normal.
white-space: normal

lunes, 6 de octubre de 2014

Leaflet: la importancia de map.invalidateSize()

Ultimamente me he estado pegando más de la cuenta con Leaflet, así que comparto aquí el problema encontrado, y la solución, por si le puede servir de ayuda a alguien.

Origen del problema: tenemos un objeto javascript L.Map de Leaflet, al que hemos añadido una serie de elementos vectoriales (objetos de tipo L.Layer).

Si queremos cambiar la capa, y mostrar otra distinta, reutilizando el objeto mapa existente, tenemos que seguir estos dos pasos:

a) Eliminar los objetos "Layer" previamente cargados. En este caso lo más comodo es haberlos agrupado previamente en un contenedor denominado "LayerGroup".

if(currentLayer){
    if(currentLayer instanceof L.LayerGroup)
         currentLayer.clearLayers();
         map.removeLayer(currentLayer);
    }
}

b) Añadir la nueva capa (objetos Layer) agrupada en un contenedor.

 var lyrs = [];//array donde guardar las geometrias
var layerGroup = L.featureGroup(lyrs); 

c) Cambiar el nivel de zoom del mapa, para que se nos muestra la nueva "capa" que vamos a añadir.
map.fitBounds(layerGroup.getBounds());

Y ¡ojo! Aquí empiezan a aparecer los problemas. Es muy posible que el nivel de zoom que se nos muestre sea siempre el máximo,  y que el mapa (la capa de tiles con ortofoto, open street map, o lo que sea que hayamos querido cargar como capa de base) no aparezca centrado. ¿Cual es el motivo?

Si cambiamos nuestro código de cambio del nivel de zoom, por el siguiente:
var bounds = _layerGroup.getBounds();
var center = bounds.getCenter();
var zoomLevel = map.getBoundsZoom(bounds);

map.setView(center, zoomLevel, true);

Veremos que zoomLevel toma el valor 0.


 ACTUALIZACIÓN: En este bug reportado en la web del proyecto Leaflet se describe perfectamente el problema. No solo zoomLevel toma el valor 0, getSize() devuelve un objeto con valores w=0 y h=0.

En este punto es cuando entra en juego el método invalidateSize() del objeto map. Si lo hacemos así:

          var layerGroup = L.featureGroup(lyrs);
         map.invalidateSize();
         map.fitBounds(layerGroup.getBounds()); 

Nuestro mapa se dibujará sin problemas, mostrando la capa que acabamos de añadir.


Moraleja: map.invalidateSize() recalcula los parámetros del objeto map,parámetros que pueden cambiar con un cambio del área de visualización del dispositivo (horizontal a vertical en móvil, cambio del tamaño del navegador en desktop, etc) o con el "bounds" de las geometrías cargadas. Así que es conveniente siempre llamar a map.invalidateSize() antes de cambiar el nivel de zoom, si pensamos que se ha producido un cambio en la inforamación de estado del mapa.

martes, 29 de julio de 2014

Operaciones de mantenimiento sobre tablas MyISAM de MySQL sin bloquearlas

Actualmente lookingformaps tiene indexados en torno al millón de mapas, y aproximadamente 30 o 40 millones de puntos de interés. Esto ha hecho que la base de datos con la que gestiona la información haya alcanzado dimensiones considerables (en torno a 10 Gb. de información, incluyendo índices).






Looking4Maps trabaja con la base de datos MySQL, por ser muy lígera, y estar muy extendida (trabajando con ella la casi totalidad de proveedores de servicios de hosting de Internet). Además, MySQL proporciona capacidades de gestión espacial básicas, con tipos geométricos, índices espaciales y operaciones espaciales básicas a nivel de rectángulos envolventes (bounding box).

Sin embargo, para poder trabajar con los tipos de datos geométricos, el motor de almacenamiento con el que trabaje deberá ser obligatoriamente MyISAM.

MyISAM es el motor más rapido en operaciones de lectura, pero cuando se van a realizar operaciones de escritura tiene un gran inconveniente: hace un bloqueo a nivel de toda la tabla, de tal forma que en muchas ocasiones ni siquiera permite que el resto de usuarios puedan realizar operaciones de lectura.

Muchas operaciones de MyISAM (INSERT, UPDATE, ALTER TABLE) realizan un bloqueo a nivel de tabla.


Esto hace que, operaciones tan simples como pueda ser modificar el esquema de la tabla para añadir un campo, pueda llegar a dejar inoperativo Looking4Maps mientras la base de datos termina de hacer sus operaciones internas para añadir el campo a la tabla, puesto que no permite realizar accesos de lectura para los nuevos usuarios.

Frente a esto, la mejor solución que he encontrado es mantener dos tablas sincronizadas: una de trabajo, que es con la que trabaja lookingformaps para proporcionar mapas a los usuarios, y otra de mantenimiento, que es la tabla sobre la que el motor de indexación realiza los volcados de los nuevos mapas que va encontrado, o sobre la que yo opero (previa interrupción del robot de búsquedas) para hacer modificaciones estructurales de la base de datos.

Para ello, MySQL permite hacer una copia instantánea de una tabla así:

CREATE TABLE COPIA_TABLA LIKE TABLA;
INSERT INTO COPIA_TABLA SELECT * FROM TABLA;



De tal forma que las operaciones que se realicen sobre COPIA_TABLA no estorban en absoluto al resto de usuarios, que pueden seguir trabajando ya que los accesos al sistema en producción se hacen contra TABLA, no contra COPIA_TABLA.


Una vez terminadas las operaciones sobre la tabla de escritura, se propagan a la tabla principal así:

RENAME TABLE TABLA TO TABLA_VIEJA;
RENAME TABLE COPIA_TABLA TO TABLA;
RENAME TABLE TABLA_VIEJA TO COPIA_TABLA;

Esta solución funciona para un sistema como Looking4Maps, pensado solo para la búsqueda e indexación, no para la creación de nuevos contenidos. Obviamente, llegado el caso de evolucionar Looking4Maps para que sea un sistema de creación de mapas, habrá que cambiar la arquitectura.