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

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

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

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

  • 如何在谷歌地图中显示两个地理坐标之间的路线?
  • Android GoogleMaps myLocation权限
  • 如何configurationAndroid地图sdk v2使用不同的密钥进行生产和开发?
  • Android SHA1版本密钥库不适用于Google地图
  • 移动谷歌地图API 2上的标记
  • 在MapView中显示popup式地图标记
  • IllegalArgumentException:使用gms.maps.model.Marker.setIcon的非托pipe描述符
  • 如何知道Android设备是否在谷歌地图API附近的地址
  • 取决于你从哪里获取地标数据。 如果你想做一个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