I need to do map pre-cache of any zone previously chosen in my app. Is it possible to do this with google map android API v2? How?
Thanks.
What I've found is the google map seems to be cached automatically on android. Have you even tried to see what the response time is on a zone that was previously visited in your application?
Anywho,
It's against the terms of service to cache the google map for most situations. It's against the terms of service of course to reverse-engineer. You have to call the service via the api so I don't see how you can pre-cache the "MAP" legally.
See section 10.1.3 subsection (b) https://developers.google.com/maps/terms
10.1.3 Restrictions against Data Export or Copying.
...
(b) No Pre-Fetching, Caching, or Storage of Content. You must not pre-fetch, cache, or store any Content, except that you may store: (i) limited amounts of Content for the purpose of improving the performance of your Maps API Implementation if you do so temporarily (and in no event for more than 30 calendar days), securely, and in a manner that does not permit use of the Content outside of the Service; and (ii) any content identifier or key that the Maps APIs Documentation specifically permits you to store. For example, you must not use the Content to create an independent database of "places" or other local listings information.
Related
I need to read the Turn by turn navigation data for my project . The direction api doesn't fulfil my requirement. Please suggest some way to read the data directly from Google Maps App.
I want to launch navigation in Google Maps app only , and then read it in my app.
Google Maps API Terms of Service have a restriction regarding route guidance. Particularly paragraph 10.4.c (iii) states
No navigation. You will not use the Service or Content for or in connection with (a) real-time navigation or route guidance; or (b) automatic or autonomous vehicle control.
Additionally, you have to pay attention to other restrictions that might be violated in your use case
Paragraph 10.1 a
No access to APIs or Content except through the Service. You will not access the Maps API(s) or the Content except through the Service. For example, you must not access map tiles or imagery through interfaces or channels (including undocumented Google interfaces) other than the Maps API(s).
Paragraph 10.5 d
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.
https://developers.google.com/maps/terms#10-license-restrictions
So Google discourage the thing that you try to implement.
I have run into a Problem.
Basically, google web services allows a maximum amount of 1000 requests per day unless you verify your credit card (which I as a student, don't have).
I am building an android application which will help you find food near you and give you tips and whatnot. But heres the problem. I have reached the daily cap multiple times just due to testing the app & debugging it... And that is a serious issue...
I know how SQLite databases & so on work, and how to use them, but is that the way one would go when using google places web services? Is that even allowed?
Here is the basic process of what is happening:
Open App & Get the users location
Search and Mark nearby food sources (restaurants & whatnot)
This is done via getting a HTTP request with "Place Search"
Place search itself deliveres little information, not enough, so I get a "Detail Search" for every place it finds.
All the results (Max. 60) are marked on the map and saved in a DataHolder class storing all the DataModel classes.
this works fine and as intended, also if I close and restart the app, it will "work". But it will redownload all the data and the details. As you can imagine, this busts my 1000 request limit pretty damm fast.
So is there a common practice/structure on how developers persist this "Google API" data? I feel the way im doing it very inefficient both for me and the user...
Thanks.
If you are developing a web based application that only needs to search for places, and does not submit new places, you should use the Places Library of the Google Maps Javascript API rather than the Google Places API Web Service. The Places library assigns a quota to each end user rather than to each key. This means that your available quota increases with your user base rather than being capped at a fixed amount.
You can use Places API for Javascript https://developers.google.com/maps/documentation/javascript/places
It has all features of server version. You could try to use it with invisible WebView, or better with Rhino.
I have been going through the Google Places API and to make optimum use of the API in my app, I need clarity on their Terms of Service regarding Google places API.
My application shows nearby restaurants to a user.
In my database, I have manually collected all the restaurant information such as name, photos, reviews, opening time etc. Please note that this collection has been done manually and not with the Google API.
Now, since Google allows to cache id of places, I have manually mapped their id to my restaurants.So, my database has five fields. id, name, photos, reviews and opening time. Again to reiterate, only the id's are from google, all other data has been manually collected by me.
The reason for doing this is that I want to serve a mix of both info for nearby restaurants. I would always hit Google places API at run time, and along with the information from their api, I would also serve my custom data.
I want to know if this is ok. Google's terms of usage are not very clear, so it would be great if someone can clarify this.
Thanks.
This is A-OK! Supporting your use case is actually why we updated the rules recently to make place IDs exempt from the caching restriction. Just be sure that when you do call Places API to display the place information, you're including the appropriate logo and attribution requirements.
I am developing an Android app that show the user's location in Google Maps API 2. Now I want it so that the user can download a custom area or custom city map for offline use of the map. How can I implement this? I also use OSMDroid, but it is not loading the map, even online.
Read the terms of use:
(b) No Pre-Fetching, Caching, or Storage of Content. You must not
pre-fetch, cache, or store any Content, except that you may store: (i)
limited amounts of Content for the purpose of improving the
performance of your Maps API Implementation if you do so temporarily
(and in no event for more than 30 calendar days), securely, and in a
manner that does not permit use of the Content outside of the Service;
and (ii) any content identifier or key that the Maps APIs
Documentation specifically permits you to store. For example, you must
not use the Content to create an independent database of "places" or
other local listings information.
Android has with version (4+ ?) introduced offline maps where I can on the handset select an area to cache and then Google Maps downloads that map data on the handset.
As I got a comment: I want to use the data, that is already on my device (if the user has done the downloading for offline maps use before). And not open a new data connection to Google's servers (e.g. because data charges would apply).
Can I use that map data from within my app - e.g. by sending the maps app an intent do show an area (perhaps with overlays)?
Or use even the map widget inside my app?
I am not talking about downloading some tiles from the Google servers into my app
Can I use that map data from within my app - e.g. by sending the maps app an intent do show an area (perhaps with overlays)?
Well, you can invoke a map application using ACTION_VIEW and a geo: Intent. Whether that will view some cached area depends on what map app the user uses and whether or not the user cached the area around your specified latitude and longitude.
Or use even the map widget inside my app?
While you can integrate a MapView in your app, it will not use this cached data. Partially, that is because the MapView code predates any of this caching stuff. Partially, that is because the cached data is owned by another process (the Maps app) and therefore is inaccessible to you.