En este artículo veremos cómo marcar (mostrar los Drawables) un sitio a través de Puntos de Interés (POI); en otras palabras reconocer una zona por su posicionamiento geográfico a través de los llamados Puntos de Interés (POI) en vez de utilizar el Reconocimiento de Imágenes.
Pero, ¿qué es un POI o Punto de Interés?
Un POI no es más que una ubicación o punto en específico; básicamente es un lugar interesante un Punto de Interés catalogado por alguien; los mapas y GPS contienen muchos de estos puntos llamados POI.
Los POIs en Wikitude son manejados por una clase llamada GeoLocation, la cual representa una localización en la tierra en su espacio 3D; como podrás imaginarte, esta recibe tres parametros:
Parámetros de la clase GeoLocation
- Latitude: Latitud de la localización dada en decimales.
- Longitude: Longitud de la localización dada en decimales.
- Altitude (optional): La altitud de la localización dada en metros.
El tercer componente hace posible ubicar un POI en el espacio 3D.
Ejemplo de la clase GeoLocation
var location3D = new AR.GeoLocation(47.77317, 13.069929, 320.0); // latitude, longitude, altitude
var location2D = new AR.GeoLocation(47.77317, 13.069929); // latitude, longitude
Ya sabemos como crear un Punto de Interés o POI en Wikitude, ahora debemos de crear el objeto Drawable para marcar el sitio; recordando los artículos pasados; esto no es más que el contenido que se desea mostrar cuando ocurra el reconocimiento ya sea mediante el Reconocimiento de Imágenes o por la localización (nuestro caso) a través de los POI:
htmlDrawable = new AR.HtmlDrawable({uri:"pagina.html"}, 1);
Ya tenemos el Punto de Interés POI y el contenido a mostrar. ¿Qué ente se encarga de localizar y analizar la zona en donde se encuentra el usuario y de esta forma mostrar los recursos establecidos en el Drawable (si y sólo si el usuario se encuentra dentro de un POI)?; en otras palabras; ¿cómo mostramos los Drawable según la posición del usuario?.
La clase GeoObject
Este clase permite especificar al menos un POI (objetos de la clase GeoLocation) o localización y los recursos Drawable a mostrar:
Parámetros de la clase GeoLocation
- POI: Referencia al objeto GeoLocation.
- Opciones (opcional): Otros parámetros para personalizar el objeto; permite definir qué es lo que se desea hacer luego de que el usuario esté dentro de un POI:
- enabled: Booleano que indica si está o no activo el objeto GeoObject.
- renderingOrder (por defecto 0): Número que define el orden de prioridad entre varios objetos de la clase GeoObject.
- onEnterFieldOfVision: Función que se ejecuta cuando el usuario entra dentro de un POI.
- onExitFieldOfVision: Función que se ejecuta cuando el usuario abandona un POI.
- onClick: Función que se ejecuta al darle click (tocar la pantalla del dispositivo) a un objeto Drawable.
- drawables.cam: Son objetos Drawables que se mostrarán en la pantalla del dispositivo.
- drawables.radar: Radar para que el usuario ubique otros POI de interés cercanos a su posición:
- drawables.indicator: Son objetos Drawables (como una flecha) que se dibujan en el borde de la pantalla para visualizar la posición de otros objetos fuera de la cámara.
Ejemplo del objeto GeoLocation, Drawable y GeoObject
var location3D = new AR.GeoLocation(47.77317, 13.069929, 320.0); // latitude, longitude, altitude
//recurso Drawable
htmlDrawable = new AR.HtmlDrawable({uri:"pagina.html"}, 1);
//construimos el objeto GeoLocation
var geoObject = new AR.GeoLocation(location3D,htmlDrawable); // POI -GeoLocation-, opciones
Resumen
Podemos resumir lo visto hasta el momento de la siguiente manera:
- Definir el POI.
- Definir el objeto Drawable o lo que nos interesa mostrar cuando el usuario esté ubicado en el POI.
- El objeto que maneja los dos anteriores; localizar y analizar la zona en donde se encuentra el usuario y si esta coincide con el (los) POI(s) establecido(s) mostrar los recursos establecidos (Drawable). Viene siendo algo así como el Tracker en el Reconocimiento de Imágenes.
Conclusiones
El uso de los POI es algo que se agradece cuando otras tecnologías como el Reconocimiento de Imágenes falla o no se desea utilizar por diversos motivos; cuenta con mayor precisión que el Reconocimiento de Imágenes (ya que es Geográfico y no hay margen de error); sin embargo, podemos utilizar ambas tecnologías (POIs y Reconocimiento de Imágenes) de manera conjunta como veremos en próximos artículos.
Enlaces de Interés
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter