Chinese google maps in Android - android

Apparently, using Google Mapping natively in Android (MapView with an API key etc.) doesn't work for users in China. However, recently maps.google.cn has become unblocked (Q1 2018: Websites blocked in mainland China)
Does anyone know of a way to adapt a native Android App to use maps.google.cn if the user is in China?
Does Google provide an alternative API key for this map server? If so, I haven't found it...
I've considered, on Locale detection, swapping out my MapView with a WebView showing maps.google.cn, but it seems a lot of hassle to get the same functionality and marker placement/selection etc. with JavaScript.
I've considered Baidu and Gaode, which provide mapping for China, but the API key registration isn't clear (or in a language I understand), seems to require a local phone number which I don't have, and I'm wary of signing up for stuff I can't read clearly. There are also coordinate conversion overheads - all in all, a bit of a pain.

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.

Reporting Map Errors and timely Updates via the Android Maps2 API?

Simply stated, we have a considerable number of users who noticed that "reported map problems" do not update on the Android Maps API in a timely fashion.
For example, when a missing address, new road, or any other issue is submitted via the "Report a Problem" interface on the Desktop Google Maps, is seems to update on the desktop versions and the main Google Maps application for Android quickly. However, the map database used for the 2.0 API do not seem to receive these updates for a much longer period; updates can take many days or even weeks.
Our Android application is used by Emergency first-responders who spend a great deal of time driving to locations. Due to this, they routinely find incorrect information or new road development that they would like to submit and see reflected on our application, but historically, their updates only appear on the Maps App and the Desktop Maps.
I recognize that any user submitted errors must be validated by the Google team, but it appears that the Android API maps exhibit a substantially longer lag between updates than any of the other products. We are frequently asked by our clients why this is the case, and I don't have any answer.
Is there any API hook to allow API users to report errors to maps, or is there some other protocol that would be more effective here? These users are a great resource for map updates, and it seems odd that this ability is apparently missing from the API, unless it was omitted intentionally to prevent some sort of abuse?
Also, are there any general guidelines for the update process for map data on the Android API relative to the other products? Specifically, is there a time frame that users should expect to see their updates shown on the API maps, when errors are submitted via the Desktop maps?
We've been mitigating this by allowing users to overlay their own markers for updated roads, but obviously an updated map is the preferred solution.
Thank you very much.

Google Mobile SDK for Business

I'm currently using Google maps API and directions API for getting routes, however there is a limitation upto 2500 requests per day. so while searching for a way, got confused after i came across this link..
Google Maps Mobile SDK for Business: Android
Can anyone please explain the difference between this sdk and google maps API..?
its basically a software development kit that makes use of the google maps api and helps you in development of apps that use those apis... if request limitation is an issue try other opensource apis like argcis or tomtom etc
In order to use the individual SDK such as map, you would require a key. That key is persistent, meaning once you have one, you can keep using that same key in your app manifest, regardless of how many copies of the same app you have.
However, there is a daily limit imposed on how much keys can be requested per day from google to prevent abuse. With that said, I don't think you would have a problem of requesting one. If it is given out for today, just wait till tomorrow and the limit would be refreshed.
As for the Enterprise version, you get more support over the normal version. The main differences is that you get the Business SDK as a static library rather than one using the Google Play Services. That is all.

Android map without the internet(offline)

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.

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.

Categories

Resources