I want to develop an Android Application the gives the distinct map of my college. Can anyone tell me what it takes to develop such a service. Is OpenGL necessary for such an application? The basic idea is to have something like Google maps that shows where the user is and directions.
My college is situated in a hilly region so the google maps images are not very clear. Can I use Google Maps and perhaps modify it in some way so as to build a crisp clear application? Or is it better to start afresh?
OpenGL isn't necessary for a mapping application (although it can be used), in fact most mapping applications, Google maps included, use pre-rendered image "tiles". Each tile covers a set geographical area and includes all the information that the user may need.
A good application for generating tiles is TileMill. Tilemill needs mapping data to generate the tiles and a good source for this data is OpenSteetMap. Once you have created your custom tiles you can use the android location api to get the users location and display the relevant tiles with a marker.
Another option is to use something like Mapp although this costs money.
Related
This app
https://play.google.com/store/apps/details?id=com.headupnav.demo
and many of them like it, add a small overlay into the standard google maps app. It then is able to get speed, direction and other information from google maps into its own custom app. I need to do something similar.
I don't want to reinvent the wheel and make a mapping application, my app just needs the navigation, speed information provided to me to run in the background.
Looking through the list of APIs, https://developers.google.com/maps/documentation/api-picker I do not see any the describe this plugin like model.
I am guessing the HUD is using the draw over other apps - but how does it get the real time data? (I can get speed from the GPS sensor - its the directions, turns etc that I am interested in)
Looking for a little bit of help structuring my problem.
I will be traveling with friends to a party weekend and we are plotting locations of places to visit and see on a shared Google map with custom layers.
My thought is that I could add real-time location layers for each attendee, based on the lat/long of those with Android phones.
I'm trying to figure at the moment the elements of the code that I will need and asking the community for help structuring the design.
So far:
Working on a way to broadcast the current lat/long of the Android phone through an API
Determining the best way to import the returns (lat/long) from the API as a layer into Google Maps (thinking KML, but there may be a better solution with GPX or text files)
Once I finish 1 and 2, will write the code to accomplish the process and load to Google Maps
Any guidance is very much appreciated
Why do you need to develop everything of this sort when Google has already provided us with the My Map app. This app is available in Play Sore for Google as well as the App Store for Apple. So all your friends whether an Android or iPhone user can install this app on their phone.
With this app you all can customize the map as per the needs and share inside the group. This app explicitly serves the purpose for the vacation planning when a group is involved.
Take a look on the Google Play Store and the App Store to explore and download.
I'm creating an application to allow user to use both online and offline map, online map i use Google map API, offline i use open street map (as Google map cannot be downloaded or cached according to their policy), how do I download the map partially ?
For example, now i have one destiny with coordinates x, y, how do I download map area around this coordinate and save on my device for later use, and later how do i load it out ?
Currently I can only display and zoom in - out with map view.
I recommend mapsforge, you can do offline maps for Android and even for the Desktop. It requires a lot less bandwidth compared to tiles with high zoom levels. Downside is that you'll have to create one map per area on your own servers like I do for graphhopper.
Are you talking about a raster map consisting of tiles or a vector map? Downloading large amounts of tiles from the official OSM servers is against their tile usage policy because these servers run on funded resources. However you can render your own tiles, for example with TileMill and Maperitive.
If you instead want to use a vector map then just go to the OSM wiki and follow the Download link on the front page.
For really small areas, say some streets, you can use the regular API. For larger areas, say a city, you should try the Overpass API. And for anything larger the best is to use an area or country extract. Afterwards you can use tools like osmosis, pbftoosm and osmconvert to process the data further.
Note that you still need to render this raw map data to a vector map.
You should have a (deep) look at the wiki of openstreetmap.org and search the web for "tiles offline osm".
And there is a project called osmdroid. It has a widget with most of the features of the Google Maps Widget. There is a offline tiles provider which can leverage downloaded tiles (cached and zip-files created with special tools).
One of the biggest problems in this area is that most tiles-server do not allow to download big areas of tiles for offline usage. If you use a tool like Mobile Atlas Creator you will get blocked by the tiles server and only download pictures which tell you "you are blocked".
So if you want to provide really big areas for your app-users with higher zoom levels (>14), you have a problem. But if you just provide a map for a small city, you could try to use one of the open tiles servers (AFAIK MapQuest is one of those with more liberate download policy) or buy a certain amount of tiles from the commercial providers (see wiki, I don't want to advertise here).
It would be nice if there was some kind of peer-to-peer file sharing of current maps. Because the license of OSM (at least how I understood it) says, that it's possible to sell maps based on OSM data, but those maps can be shared and published in any way.
If anybody finds a solution for sharing maps (without much costs of AWS/provider/cloudfront/...) this would be interesting for many Android App programmers. The advantage of osmdroid is that all installed apps can reuse the same maps.
I can't find relevant answer in the internet.
I want to use Openstreet Map offline as getting the map inside the sdcard and develop for Android app.
I can't find step by step guide how to save into sdcard. Then develop offline map.
Many thanks.
Not sure if this is a good question, but I will try to answer:
As #scai says, there is the #osmdroid toolbox that adds a widget to display OSM map tiles. This rendered tiles can be cached or downloaded from the OSM servers (respect TUP) and shared offline.
There are also other solutions to realize it https://wiki.openstreetmap.org/wiki/Frameworks
But please keep in mind, that it's usually not that easy:
maps get outdated and you wan't to update them at client side
map servers are shared goods and high speed bulk download is a shame
quickly your users will request geocoding, routing and all the features of Google Maps
quickly you want tot display more complex information on top of your widget
So I encourage you to think about what needs to be done first (also for further versions) and then pick the right toolbox :)
Currently, I am working on the development of an application for Android devices, which will include indoor tracking and routing.
On the one hand, the administrator of this application will upload an image of the map, so users' locations will be projected on this map. On the other hand, a user will be able to zoom in/out, navigate the map, get information and other similar actions that are available on the Google Map Services.
I have been reading in the Android API documentation and I came across MapView. Even though MapView is a complete and robust library, it is not going to help me since it makes use of the Google Maps Service.
My question is whether another (similar) API exists for viewing and managing a Map, besides the MapView.
Thank you for your time.