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:
- 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.
- 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/