给定GPS坐标,我如何find附近的地标或兴趣点?

我刚刚买了一台Google Nexus One智能手机,我想写一个小型的Android应用程序。 假设我可以得到我当前的GPS坐标,那么我怎样才能以编程方式在某个半径内find附近的地标或兴趣点? 是否有一个API来获得GPS地理标记的地标,就像在Google地球的数据库中一样?

例如,如果我在芝加哥市中心,那么我的项目就会把我指向那个城市所有的“旅游者”。

理想情况下,它将全部在我的智能手机上运行,​​但如果有必要,我可以让智能手机查询一个networking服务器,然后运行更多的查询。

Solutions Collecting From Web of "给定GPS坐标,我如何find附近的地标或兴趣点?"

取决于你从哪里获取地标数据。 如果你想做一个networking查询,你可以运行上面的一个东西。

另外 – 如果你有自己的数据,你可以把它存储在数据库中经纬度和经度值,然后形成一个查询的边界矩形。 这个问题告诉你如何计算一个包围你当前点周围给定半径的边界框(它将是一个盒子,所以它会比一个圆圈更大。

如何计算给定纬度/经度位置的边界框?

使用边界框,你现在可以从你的数据库where lat < maxlat and lat > minlat and lon > minlon and lon < maxlon进行查询, where lat < maxlat and lat > minlat and lon > minlon and lon < maxlon ,它会给你所有你感兴趣的方面。

然后,使用Android API中的Location类,可以计算出每个命中的方位和距离,然后可以按照您的位置进行半径sorting。

最快的方法是:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=business+near+city"); startActivity(intent); 

在地理位置后,你把你的坐标,然后q =你inputsearchtearms,如旅游+城市。 这将启动感兴趣的点的谷歌地图应用程序。

如果您想在应用程序中使用地图视图,则需要从某个服务(如您自己的服务)获取数据。 不过,您可以像这样从Google的ajaxsearch中获取数据: http: //ajax.googleapis.com/ajax/services/search/local? v=1.0&rsz=large&gl=pl&q=tourism+ chicago更多信息: http:/ /code.google.com/apis/ajaxsearch/documentation/reference.html#_fonje_local这将为您提供具有地理坐标的结果,您需要制作一种parsing结果的方法,并将其放入数据库中。

您可能会看到的另一个Web服务是: http : //developer.yahoo.com/geo/geoplanet/

您可以使用的一个开发人员友好的数据源是http://compass.webservius.com ,它是美国数百万商业列表的数据库,可以使用REST API通过坐标边界框进行search。

Foursquare有一个很棒的API,可以给你的企业和其他有兴趣的地方的GPS坐标。 不需要用户login即可访问。 后台数据库由四方用户持续维护。

https://developer.foursquare.com/overview/venues