Given GPS coordinates, how do I find nearby landmarks or points-of-interest?
I just bought a Google Nexus One smartphone, and I want to write a small Android application for fun. Suppose I can get my current GPS coordinates, so then how can I programmatically find nearby landmarks or points-of-interest within some radius? Is there an API to get GPS geo-tagged landmarks, like in Google Earth's database?
For example, if I'm in downtown Chicago, my program would point me to all the "tourist" things to visit in that city.
Ideally, it would all run on my smartphone,开发者_如何转开发 but if necessary, I can have the smartphone query a webserver, which would then run more queries.
Depends where you're getting your landmark data from. If you want to do a web query, you could run with one of the things above.
Alternatively - if you have your own data, you can stash it in the db with lat and lon values and then form bounding rectangle for a query. This Question tells you how to calculate a bounding box that covers a given radius around your current point (it will be a box, so it will be bigger than a circle....
How to calculate the bounding box for a given lat/lng location?
Using the bounding box, you can now do a query from your db where lat < maxlat and lat > minlat and lon > minlon and lon < maxlon
which will give you all your points of interest within the box.
Then, using the Location class in the Android api, you can get it to calculate the bearing and distance to each of the hits and then you could for instance, sort by radius from your position.
The quickest way to do this is:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=business+near+city");
startActivity(intent);
After geo you put your coordinates, and after q= you input your search tearms, like tourism+city. This will fire up the Google Maps app with the points of interest.
If you want to use a maps view inside your application, you would need to get the data from some service, like your own. However you could pull the data from Google's ajax search like this: http://ajax.googleapis.com/ajax/services/search/local?v=1.0&rsz=large&gl=pl&q=tourism+chicago More info here: http://code.google.com/apis/ajaxsearch/documentation/reference.html#_fonje_local This will give you results that have geo-coordinates and you would need to make a way of parsing the results and maybe get them into a database.
Another web service you might look at is: http://developer.yahoo.com/geo/geoplanet/
One developer-friendly data source you can use is http://compass.webservius.com - it's a database of millions of business listings in the USA, easily searchable with a coordinate bounding box using a REST API.
Foursquare has a great API that gives you businesses and other places of interest given GPS coordinates. Doesn't require user sign in to access. The backing database is constantly maintained by foursquare users.
https://developer.foursquare.com/overview/venues
精彩评论