Partially download open street map in android - android

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.

Related

Google Maps Offline Android Development

I just saw this link
https://googleblog.blogspot.com/2015/11/navigate-and-search-real-world-online.html
and was wondering if there is a way with using this downloaded map in my own mapping application.
Like if I go to Google Maps, download the area, and then in my own app upload that area and use it as offline use.
Has anyone been able to do this or is Google ever going to allow this?
Is it possible?
Yes,it is possible, there are different ways to do it, here you can find one:
* TileProvider using local tiles
The problem is that
Google do not allow it.
On their terms and permissions about google maps API (http://www.google.com/permissions/geoguidelines.html) on "Using maps on the web or in applications" they mention:
"When using the Google Maps API, certain restrictions may apply. Google continually updates the imagery within Maps; thus, caching may result in stale or even impermissible imagery. You may also not mass download or use bulk feeds of any Content, including but not limited to extracting numerical latitude or longitude coordinates, geocoding, text-based directions, imagery, visible map data, or Places data (including business listings) for use in other applications."
On the hand, there are other maps providers that allow this practice. Some of them:
-Open street map:
-OSMDroid
-ESRI/Arcgis (arcgis is based on ESRI's cloud services)
is Google ever going to allow this?
Google maps introduced last month (November 2015) the offline mode, does not only download the map, but also the different locations (images, tiles, etc) within. Even if downloading just the maps is possible since 2012, maybe the introduction of offline features can change their perspective over their offline assets terms, but until they do not change their permissions agreement, it is just speculation.

How to start android to use Openstreet Map offline?

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 :)

Requirements for Android Map Application

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.

What is tile server in OSM maps

My application completely on maps which show pins and route information and distance between two pins.
For this i am trying to do using OSM maps instead of Google Maps because google maps had certain
limitations if user are increased.So my client wants other maps instead of Google maps.Then after research i came to know OSM is other approach.But it has some limitations for using tile server.But i do not understand what it is.Can any one please tell me what it is and is it better to go with OSM
A tile server is the service that generates rendered images (tiles) from a database. Hence it requires a lot of storage capacity for both the database and the rendered tiles. Bandwidth and CPU are required, too, but depend mostly on the access frequency of your tile server.
There are also several non-official OSM tile servers with a less restrictive usage policy. However, if they don't fit your needs and you want to know more about setting up your own tile server, visit switch2osm.org.
As far as I know, a Tile Server is a server that hosts the OSM map. You can create your own Tile Server and replicate data to that server from another Tile Server.

Tile server for other map data than OpenStreetMap

Within my Android application I display some data within a map. To do that I currently download some map data from an OpenStreetMap tile server and store it locally (so that users can access an already used map without causing traffic again).
Now I have seen some Android apps using other map data/sattelite pictures (perhaps from Google?). Unfortunately I could not find any tile servers that offer the same principle like OSM where it is possible to cache the map tiles locally. So does anybody know of similar projects/tile servers that are not OSM but provide the same functionality?
Elmi...
I didn't use tiles images of map for google..
But I have one sample link which provide tile image from google
Tile Image of Google Map
Maybe on MapQuest : http://developer.mapquest.com/web/products/open/map
Aerial view and others
In case somebody has the same problems: there exists some Android code at http://sourceforge.net/projects/libwlocate/ which already uses OpenStreetMap, Google Map and Google Sattelite view optionally for drawing Maps.

Categories

Resources