You may want to check out our university (University of South Florida)'s "OpenTripPlanner for Android" open-source project:
https://github.com/CUTR-at-USF/OpenTripPlanner-for-Android/wiki
This is a native Android app that uses a REST API to access the main server-side open-source OpenTripPlanner project (created primarly by TriMet in Portland and OpenPlans), which does the actual multimodal (bike/transit/walk) trip planning:
https://github.com/openplans/OpenTripPlanner/wiki
The planned trip is then passed back to the Android app and displayed on the screen.
This is a slightly different server-side approach that's entirely implemented in Java and runs in a Java application server such as Tomcat, instead of utilizing a spatial database server such as Oracle spatial.
There are two steps to getting a running server:
- Use the OTP GraphBuilder application to build a graph object (a file) from several data sources (inclduing OpenStreetMap) that contains a serialized set of Java objects that represent the graph topology and rules for traversing the graph.
- Start the Tomcat server, which loads the graph object from disk into memory, deserializes the graph, and is then ready to serve trip planning requests.
There are performance/scalability benefits of having the entire graph in memory for routing, instead of having to hit a hard disk where the Oracle database is presumably located. I don't know if Oracle is a hard requirement for your project, but if not you might want to consider basing your application off of OpenTripPlanner (OTP).
The OTP Android app is available on Google Play:
https://play.google.com/store/apps/details?id=edu.usf.cutr.opentripplanner.android
And here's our OpenTripPlanner server instance running in Tampa, FL, that it sends the REST requests to (this is the normal web browser view):
http://opentripplanner.usf.edu/
Here's a sample REST API request that would be sent from the app to the server (note the "/opentripplanner-api-webapp/" addition to the below URL to give you the REST API instead of the normal web interface). If you open this in your browser, you should see the XML-encoded trip planned from the lat/long "fromPlace" to the lat/long "toPlace" encoded in the 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
Here's the defintion of the OTP REST API that will tell you what each XML element in the response means:
http://www.opentripplanner.org/apidoc/
The idea to transfer vector data instead of images and render it on the client side is not new. There are already a lot of tools/projects doing that. See for example this plugin of leaflet, polymap, and also the cartagen project. OpenLayer developer are trying to introduce it in the (long-awaited) version 3.0. Each of these initiatives use their own vector tile format (including the mapnik one) - a standard should certainly emerge in the future.
If you are interested in the principles behind and some relevant literature, you should have a look at this excellent paper (yes, I do self promotion :-):
Gaffuri, J., 2012. Toward web mapping with vector data. In: Xiao, N., Kwan, M.-P., Goodchild, M. F., Shekhar, S. (Eds.), Geographic Information Science. Vol. 7478 of Lecture Notes in Computer Science. Springer Berlin Heidelberg, Berlin, Heidelberg, Ch. 7, pp. 87-101.
A free version of the paper is available here. To sumarize it: Efficient vector web mapping = smart format for data and styles + zoom dependant generalisation + (tiling OR spatial indexing). A use case is visible here.
Best Answer
First you must have the osm data for giving input to osmand map creator. You can download the osm data from http://download.geofabrik.de/ Geofabrik gives the latest updated osm data. Then download osmand map creator and open the jar file. There is an option to convert osm file to obf. After creating obf file open it in the osmand mobile device.