如何在android中使用openstreetmap通过纬度和经度获取城市名称[关闭]

2024-01-10

在我的应用程序中,我使用 osm 而不是谷歌地图。我有纬度和经度。所以从这里我将如何查询从 osm 数据库获取城市名称。请帮助我。我正在使用 osmdroid-android-3.0.8。我需要为此下载任何额外的库吗?


这可以通过反向地理编码 http://en.wikipedia.org/wiki/Reverse_geocoding,您可以在其中将纬度/经度点转换为人类可读的地址。通常,反向地理编码是作为网络请求完成的。

就您而言,开放街道地图有一个反向地理编码API http://wiki.openstreetmap.org/wiki/Nominatim#Reverse_Geocoding_.2F_Address_lookup您可以在其中向他们的 Web 服务发出请求,然后使用 xml/json 响应来获取城市名称。

向 osm Web 服务发出反向地理编码请求将如下所示:

http://nominatim.openstreetmap.org/reverse?format=xml&lat=[LATITUDE]&lon=[LONGITUDE]&zoom=18&addressdetails=1

Where:

  • [LATITUDE] 是要进行反向地理编码的纬度点。
  • [LONGITUDE] 是要进行反向地理编码的经度点。

这会给你一个看起来像这样的结果:

<reversegeocode timestamp="Fri, 06 Nov 09 16:33:54 +0000" querystring="...">
   <result place_id="1620612" osm_type="node" osm_id="452010817">
     135, Pilkington Avenue, Wylde Green, City of Birmingham, West Midlands (county), B72, United Kingdom
   </result>
   <addressparts>
     <house>135</house>
     <road>Pilkington Avenue</road>
     <village>Wylde Green</village>
     <town>Sutton Coldfield</town>
     <city>City of Birmingham</city>
     <county>West Midlands (county)</county>
     <postcode>B72</postcode>
     <country>United Kingdom</country>
     <country_code>gb</country_code>
   </addressparts>   
 </reversegeocode>

然后,您可以将结果作为 xml 文档进行处理,以查找城市名称节点。

另一种方法是使用谷歌的地理定位 API https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android中使用openstreetmap通过纬度和经度获取城市名称[关闭] 的相关文章

随机推荐