5 votos

Aplicación nativa para Android - Geoserver

Estoy participando en un proyecto de aplicación móvil universitario de mayor envergadura y mi tarea consiste en diseñar y desarrollar un módulo móvil relativo a los servicios de mapas y localización en una aplicación nativa de Android.

En breve, mi parte de la aplicación deberá mostrar diferentes tipos de información en un mapa georreferenciado (Google Map u Openstreetmap) basado en datos de Oracle:

  • El camino más corto para llegar a un determinado evento desde un lugar determinado
  • Diferentes capas con información de dominio del evento (como lugares de aparcamiento alrededor, líneas de autobús, etc.)
  • Opción GetFeatureInfo

Soy nuevo en este tipo de temas y me gustaría hacer una pregunta de arquitectura al respecto.

He pensado en utilizar Geoserver para definir capas, estilos, conjuntos de datos, etc., y el protocolo WMS para generar el mapa sobre una página web utilizando HTML 5, OpenLayers y jQuery-mobile.

Pero, ¿cómo puedo lograr esto en una aplicación nativa de Android?

¿Construir una página web en la que muestre el mapa utilizando HTML 5, OpenLayers y jQuery-mobile para interactuar con Geoserver y luego utilizar las Webviews en Android para mostrar la página web en mi aplicación? ¿Sería esta una solución posible? ¿Posibles inconvenientes?

¿Cuáles son las alternativas con Geoserver?

4voto

fields Puntos 372

Quizás quieras consultar el proyecto de código abierto "OpenTripPlanner for Android" de nuestra universidad (University of South Florida):

https://github.com/CUTR-at-USF/OpenTripPlanner-for-Android/wiki

Se trata de una aplicación nativa para Android que utiliza una API REST para acceder al proyecto principal de código abierto OpenTripPlanner (creado principalmente por TriMet en Portland y OpenPlans), que se encarga de la planificación real de los viajes multimodales (bicicleta/tránsito/camino):

https://github.com/openplans/OpenTripPlanner/wiki

A continuación, el viaje planificado se transmite a la aplicación Android y se muestra en la pantalla.

Se trata de un enfoque del lado del servidor ligeramente diferente que se implementa por completo en Java y se ejecuta en un servidor de aplicaciones Java como Tomcat, en lugar de utilizar un servidor de bases de datos espaciales como Oracle spatial.

Hay dos pasos para conseguir un servidor en funcionamiento:

  1. Utilice la aplicación OTP GraphBuilder para construir un objeto gráfico (un archivo) a partir de varias fuentes de datos (incluyendo OpenStreetMap ) que contiene un conjunto serializado de objetos Java que representan la topología del grafo y las reglas para recorrerlo.
  2. Inicie el servidor Tomcat, que carga el objeto gráfico del disco en la memoria, deserializa el gráfico y está listo para servir las solicitudes de planificación de viajes.

Hay beneficios de rendimiento/escalabilidad de tener todo el gráfico en memoria para el enrutamiento, en lugar de tener que golpear un disco duro donde la base de datos Oracle se encuentra presumiblemente. No sé si Oracle es un requisito estricto para su proyecto, pero si no es así, podría considerar basar su aplicación en OpenTripPlanner (OTP).

La aplicación OTP para Android está disponible en Google Play:

https://play.google.com/store/apps/details?id=edu.usf.cutr.opentripplanner.Android

Y aquí está nuestra instancia de servidor de OpenTripPlanner ejecutada en Tampa, FL, a la que envía las peticiones REST (esta es la vista normal del navegador web):

http://opentripplanner.usf.edu/

A continuación se muestra un ejemplo de solicitud de la API REST que se enviaría desde la aplicación al servidor (fíjese en la adición de "/opentripplanner-api-webapp/" a la siguiente URL para ofrecerle la API REST en lugar de la interfaz web normal). Si abre esto en su navegador, debería ver el viaje codificado en XML desde la latitud y la longitud "fromPlace" hasta la latitud y la longitud "toPlace" codificadas en la URL:

http://opentripplanner.usf.edu/opentripplanner-api-webapp/ws/plan?fromPlace=28.066788,-82.410104&toPlace=28.059324,-82.415394&mode=TRANSIT,WALK&min=QUICK&maxWalkDistance=840&time=2:49%20pm&date=10/24/2012&arr=Depart&itinID=1&wheelchair=false

Aquí está la definición de la API REST de OTP que le dirá lo que significa cada elemento XML en la respuesta:

http://www.opentripplanner.org/apidoc/

0voto

JB King Puntos 10105

Parece que ya tienes tu pila resuelta GeoServer/OpenLayers. También echaría un vistazo a Leaflet para móviles, creo que el soporte es un poco más maduro.

Para hacer una aplicación nativa, ya que estás utilizando bibliotecas de JavaScript para el cliente como OpenLayers o Leaflet, debes buscar utilizar una plataforma de desarrollo móvil como PhoneGap (http://phonegap.com/) o Titanium (http://www.appcelerator.com/), que te permitirán codificar en HTML/JS/CSS y luego compilar a una aplicación nativa.

0voto

Nathan Feger Puntos 7675

Gran parte de esto ya se ha resuelto (véase osmdroid proyecto). Tal vez eso pueda proporcionar un mejor marco para una aplicación "nativa".

0voto

Adam Ernst Puntos 6939

Para una aplicación cartográfica nativa también puedes considerar Mapsforge . Las superposiciones proporcionadas pueden ampliarse fácilmente para implementar WFS y WMS sobre los mapas base de OSM.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X