I've been trying to answer this myself but I can't find it, would any of you know?
Truth is they probably scraped it from someone else initially. See Yelp, Maps (Gmail,Yahoo,Bing,etc), Citysearch, etc. Yahoo has some flexible GeoData APIs. Some of the above also have APIs (including FourSquare) which would make this easier, but is most likely against their terms of service (TOS).
Please post back if you find out otherwise, or a viable solution.
Users generate/add the locations
Related
I know this question has been asked but most answers were a few years old and not all for a Ruby on Rails project. In my current project, I am using the Geocode gem (via Ruby on Rails) and anyone is able to search users by their location (which I also use the Carmen gem for country, subregion).
Anyway, I've been receiving this issue lately (Google Geocoding API error: over query limit.). After reading up on it, I see that this is quite common. Most of the resolutions seem to involve caching but others say that it does not work much/well.
I wanted to pose the question to many here and see what various people think is a good resolution. Ideally it would be great to keep the Geocoding gem within the project, but if it is not worth it, please let me know of an alternative. If you know of a resolution to this issue, please let me know too.
Thank you and simply looking to receive feedback for this situation =)
PS: I do not use the Google Maps API. The project is setup so that a user enters their information (using Carmen gem) and typing the cit. The location is geocoded and others can type in a city, state/region to find users within that region.
EDIT
Additional Question: When this limit is met, would that also cause the longitude and latitude value to be nil when a user signs up? Since it is as the limit, it will not geocode the location entered and so it keeps the value at nil? I've had this happen before so I just want to make sure this is why =P
EDIT 2 - ANSWER?
After speaking a bit (in comments below), it seems the best option is to cache the information. With that being said, after researching I see that there are a lot of legalities when it comes to caching with google? Again I do not use the Google Map API so the legal aspect may not be relevant?
Would this be a good solution to implementing the cache (https://github.com/codeforamerica/ohana-api/wiki/Customizing-the-geocoding-configuration)?
Just want to make sure I implement the cache aspect properly =P Thanks!
Joe
ANSWER
So after some research and help from japed (see comments above), I found this documentation (https://github.com/codeforamerica/ohana-api/wiki/Customizing-the-geocoding-configuration) which clearly explained how to setup Redis with Geocoding for caching purposes. It also provided another link with more information to test it in development before deploy.
Thank you!
Joe
How do you implement suggestions when a user starts typing in their city/location into an iOS app text field? For example, if you look at the yelp or maps app, when you start typing in a city it will provide suggestions based on what you start typing. Is there a way to do this, like somehow get a list of all the CLRegions in the CoreLocation framework, or some other way of implementing this?
Thanks for any help.
The best solution for this is to use someone else's (web-based) geocoding database - geocoding is a complex problem that you don't want to solve yourself :-). Geocoding is the act of taking a textual address and turning it into a latitude/longitude. Typeahead for geocoding is a helpful feature that requires fairly large databases that likely aren't suitable for mobile apps, thus my recommendation to use one of the web-based geocoding services for this.
Google's places API is probably a good candidate:
https://developers.google.com/places/documentation/autocomplete?csw=1
Check out this answer for some commentary from Google from 2011 when they first opened up that API in 2011:
Google Places API in iOS application
I am using Google Places API to pull a list of resturants, and I am displaying them on map. However, since Apple has switched there map services over from Google in iOS 6.0, I am now in violation of Google's terms of use, which states that you must display Google data on a Google map.
"If your application displays Places API data on a map, that map must be provided by Google."
https://developers.google.com/places/policies#terms_of_use
I obviously need to change the map, because I am not going to release an application that is in violation. Any thoughts or suggestions on what to do? Should I go Google Maps with a web view? Does apple have some sort of Google Places API alternative?
Edit:
Using Google Maps through a web view is a hassle, i'd like to find an alternative to that, although it would technically work.
I decided to use Google Maps JavaScript API. Although, it is a little more difficult to deal with, mainly the JavaScript through Objective-C, it is a solution. The map is displayed through a web view, and I use JavaScript to interact with the map.
https://developers.google.com/maps/documentation/javascript/tutorial#api_key
I will wait to accept this answer, to see if anyone else has any thoughts. I just wanted to post this, in case it helps someone else.
Edit:
Google recently released a Maps SDK for iOS, this is the better solution now.
https://developers.google.com/maps/documentation/ios/
I would try to directly contact Google, explaining the situation, and ask them for written permission to use Apple's maps. This is more a legal question than programming. One would think that Google is aware that you can no longer display their maps using Apple's API and that, even regardless of the map, they would want you to use their places, as doing so generates advertising revenue for them.
Agree with #Owen here - you could get permission to leave your app unchanged until some possible future date when you might have to change it, or could you definitely go to the effort of changing it now and then possibly have to change it again in the future for some other reason.
If you could get a 100% guarantee that you could change it once and never have to change it again then I'd say do it now, but nothing's certain.
Are there any ways to get information about different places (cities, mountains, rivers , etc) via latitude/longtitude?
I'm planning to use it in my rails project.
Of course, it will be perfect to use information from wiki. Any example of searching over wiki via lat/lon?
May be any other technology/website/api?
You may also check the Geocoder gem to find address by latitude and longtitude. Then you can use wiki api to find articles, like this:
en.wikipedia.org/w/api.php?action=opensearch&search="place_name"&prop=info&format=xml
Or, maybe wikilocation will help you
Check out the Open Street Map API http://wiki.openstreetmap.org/wiki/API They tend to discourage read-only queries, but you can probably find someone else's API for that data.
Also check out http://www.gisgraphy.com/ They have a free webservice here http://www.gisgraphy.com/documentation/user-guide.htm#geolocwebservice that looks like it has what you are looking for.
obviously, i think its overkill for me to run a spider that will crawl the internet autonomously like google or yahoos.
so i am wondering, if there is some way i can access a major search engine's database, instead of scraping them ?
Google and Yahoo both have APIs:
http://code.google.com/apis/ajaxsearch/
http://developer.yahoo.com/search/
But like everybody else said, we need more info about what you're trying to do to help you.
Other than doing regular searches, no.
What are you trying to do?
Nope. You're already violating terms of use policy by scraping them. That kind of information is carefully guarded for obvious reasons.