Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 533
stackoverflowuser2010 Avatar asked Apr 13 '10 17:04

stackoverflowuser2010


4 Answers

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.

like image 54
Fiid Avatar answered Nov 19 '22 07:11

Fiid


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.

like image 34
Jan S. Avatar answered Nov 19 '22 08:11

Jan S.


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.

like image 1
Eugene Osovetsky Avatar answered Nov 19 '22 09:11

Eugene Osovetsky


Another web service you might look at is: http://developer.yahoo.com/geo/geoplanet/

like image 1
Mulone Avatar answered Nov 19 '22 09:11

Mulone