Android map without the internet(offline) - android

I hope this is not a naive question but is there any way to make an android application that uses a map without the use of google or the internet in general(as in not a google api)?Can a map be download from somewhere and merged offline in the code?I'm thinking in terms like having a street map,but not in your hand in this case.Thank you

Using google maps:
The google map application supports pre-caching, which does exactly what you want.
Now the bad news: it's not only impossible to do through the API (yet), it would also break the terms of service.
More details here:
Downloading/Caching Google Maps for Offline Use
TOS section 8:
License Restrictions. Except as expressly permitted under the Terms, or unless you have received prior written authorization from Google (or, as applicable, from the provider of particular Content), the license granted to you in Section 7 is conditioned on your adherence to all of the restrictions in this Section 8. Under this Section 8, you must not (nor may you permit anyone else to):
...
8.2. copy, translate, modify, create a derivative work of, pre-fetch, cache, or publicly display any Content or any part thereof.
...
(Emphasis added by me)
Using other map services:
No idea...

Have a look at http://code.google.com/p/mapsforge/
It uses openstreetmap instead of googlemaps and allows for offline maps. The API is almost identical to the googlemaps api. If you're familiar with googlemaps api it should be very easy to switch..

You might want to try OpenStreetMap instead of GoogleMaps. While you're not going to have as rich of a dataset, it's FOSS you can still do a whole lot with it.
The OSM Android page is here.
I haven't dug too much into offline cacheing for it, but as you can see, a lot of apps have already been built using their kit.

You may have a look into OpenStreetMap and generate your own tiles using Mapnik.
For mobile use I will suggest look into osmosis - crop different sections (bounding boxes) - to make smaller size packages. Here it's explained well how it can be done.

Related

OSMDROID - How to select the best tiles provider depending on the usage policy

I am currently developing an Android app which will show online maps relating to point of interests nearby the current location of end-users. I am using osmdroid, osmdroidbonuspack and MAPNIK as tile provider.
My main concern is the tiles providers' usage policy as I would like to avoid the "forbidden" responses when users start using the app. I don't expect to have too many users but just in case.
Checking the OSM (MAPNIK) usage policy, it says that it is not allow to use the maps in an app that is distributed without prior permission. I asked for that permission but in case I did not get it, I was thinking to use MAPQUEST maps so I registered in mapquest website to get a private key to be used in the app. The problem is that I don't see any way to add the MAPQUEST KEY when using osmdroid.
Summarising I have two questions:
What is the best tile provider in terms of usage policy to publish an android app?
In case to select MAPQUEST, how can I add a private key? Why does it not required to add a MAPQUEST key when using MAPQUESTOSM? Is completely open free?
Thank you very much,
Regards,
Since you're talking about OSM, I assume you are referring to MapQuest Open (OSM-based), not standard MapQuest (proprietary data).
MapQuest Open doesn't require a dev key for tile download. You just specify the base URL for MapQuest and you're ready to go. Details can be found on the OSM Wiki.
MapQuest has asked to be notified by devs who intend to deploy anything that might request larger volumes of tiles. For an app, this obviously depends on the user base. Back when I built MapQuest tile support into my own app, I notified them and asked if they needed anything else for me, and I was simply told to go ahead – no further steps required.
The tile usage policy wiki page already lists several alternative OSM tile providers. The best one depends on your specific requirements.

How to Access Google Googles API or Google Search by Image API

Would be great, if someone suggest me a way to access Google Googles API or Google Search by Image API.
Currently seems that Google doesn't incentive the use of this API for third parts developers unlike the others Google APIs.
The image search in Google site has a button with a camera that allows the user to upload an image and start a search by image content, if the Google Googles API are not accessible directly, maybe, a good idea might be parsing the Google Search by Image page code and implement a system that access this service through Google Site.
A way to access this function in an app would give to developers infinite possibility to make new awesome apps.
Any suggestion?
Both of these features use internal APIs that are not publicly accessible. They're not intended to be used by software that you write.
If you tinker around, you might be able to reverse engineer them, but I'd recommend against it. Any code you write that depends on them can break at any time without warning.

open street maps api for android

Does anyone know where I can find the open street maps api for android?
I have searched the site and all I can see is other peoples implementations of it.
I'm looking for one which can be integrated into another app and fully customized.
You can integrate OSM by using the Osmdroid API. This gives you functionality very similar to Google maps but you can also use OSM tiles offline if you prepare the tiles with Mobile Atlas Creator (MOBAC)
See Osmdroid home page (GitHub)
You just need the osmdroid-android-3.0.5.jar in your build path. You don't need an API key like Google demands and tiles get cached, so next time you visit that location you save on data download costs/time.
It's got a few tiny bugs, but overall it's pretty good
If you are going for a commercial app them it's worth taking a look at "commercial grade Android SDKs" - all vendors allow you to customise your app (depending on the vendor, the degree of customisation may vary), and I believe all vendors have "free tiers" (payment plans where you actually don't have to pay :) ) that might be good enough for your app (or at least you don't have to pay until your app is commercially successful).
To name a couple Android SDK providers:
skobbler (now Telenav) has an SDK which is able to render maps & display turn by turn navigation on your Android phone. It also supports offline mode. Check out their developer platform for details
OsmSharp also does map rendering and turn by turn navigation. You can pull their code from github
MapQuest has a nice map & routing engine for Android. I think you could also use their routing service with Mapbox maps (see this as a starting point). I don't think they can do offline mode

Offline Google Maps with App Building [duplicate]

Like Nokia's OVI maps can be used offline, there must be some way of caching Google map tiles too. Any hints?
If you are trying to cache the tiles that Google serves, that may be a violation of Google's Terms of Service (unless, under certain circumstances, if you've purchased their enterprise Maps API Premier). That's why gmapcatcher has it crossed off their list. See http://code.google.com/p/gmapcatcher/issues/detail?id=210.
At the gmapcatcher URL above, you will also find a shell script that can download tiles (or so its author says).
There are also other projects that try to make Google Maps available offline:
http://code.google.com/p/ogmaps/
http://code.google.com/p/gmapoffline/
Lastly, if Google Earth can meet your needs, then you can use that. Offline usage of Google Earth requires a Google Earth Enterprise license according to http://www.google.com/permissions/geoguidelines.html.
Note that the preceding page also says: "You may not scrape or otherwise export Content from Google Maps or Earth or save it for offline use." So if you try to cache tiles, that will almost certainly be considered (by Google, anyway) a violation of the Terms of Service.
Unfortunately, I found this link which appears to indicate that we cannot cache these locally, therefore making this question moot.
http://support.google.com/enterprise/doc/gme/terms/maps_purchase_agreement.html
4.4 Cache Restrictions. Customer may not pre-fetch, retrieve, cache, index, or store any Content, or portion of the Services with the exception being Customer may store limited amounts of Content solely to improve the performance of the Customer Implementation due to network latency, and only if Customer does so temporarily, securely, and in a manner that (a) does not permit use of the Content outside of the Services; (b) is session-based only (once the browser is closed, any additional storage is prohibited); (c) does not manipulate or aggregate any Content or portion of the Services; (d) does not prevent Google from accurately tracking Page Views; and (e) does not modify or adjust attribution in any way.
So it appears we cannot use Google map tiles offline, legally.
update:
I found the terms of use from Google Map:
Section 10.5
No caching or storage. You will not pre-fetch, cache, index, or store
any Content to be used outside the Service, except that you may store
limited amounts of Content solely for the purpose of improving the
performance of your Maps API Implementation due to network latency
(and not for the purpose of preventing Google from accurately tracking
usage), and only if such storage: is temporary (and in no event more
than 30 calendar days); is secure; does not manipulate or aggregate
any part of the Content or Service; and does not modify attribution in
any way.
It means we can cache for limited time actually
On http://www.google.com/earth/media/licensing.html there is a "Mobile" section containing :
Similar to our online terms, if you use our APIs or a mobile device’s native Google Maps implementation (such as on an Android-powered phone or iPhone), no special permission is required, but you must always keep the Google name visible. Offline caching of our content is never allowed.
You can use Open Street Map : you will find dozens of different layers and map types, and this is absolutely free. You can download all the map tiles you want. And of course, as anyone can enhance the map, it displays more information than Google's maps.
If you need help, you can ask the community which is also very active.
On Android platforms, Oruxmaps (http://www.oruxmaps.com) does a great job at caching all WMS sources. It is available in the play store.
I use it daily in remote areas without any connectivity, works like a charm.

Caching maps within an android app

I am looking to create an app where users can download a map to their phone before they go to a specific place (in case there is no 3G signal there) and then use GPS to take specific routes that will have been marked on the maps.
I have noticed GoogleMaps 5 has just been released that enables caching.
Is this something I would be able to use or can you not incorporate google maps 5 into another app.
I am very new to Android and am not quite sure what can and can't be done as yet so 'm sorry if
this is a really silly question?
Thanks for any help!
Bex
Is this something I would be able to use or can you not incorporate google maps 5 into another app.
Google Maps (the app) does not use the same Google Maps (the SDK add-on) that the rest of us use. Hence, right now, offline caching is not available to us.
You might consider looking at OpenStreetMap, which has some Android integration and supports offline maps.

Categories

Resources