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

如何在android中使用openstreetmap通过纬度和经度获取城市名称,android,osmdroid,openstreetmap,Android,Osmdroid,Openstreetmap,在我的应用程序中,我使用的是osm而不是谷歌地图。我有纬度和经度。因此,从这里我将如何查询以从osm数据库中获取城市名称。请帮助我。我使用的是osmdroid-android-3.0.8。是否有任何额外的库我必须为此下载?您可以使用 下面是一个如何获取城市名称的示例(为了简洁起见,省略了一些代码): 这可以通过将纬度/经度点转换为人类可读的地址来完成。通常,反向地理编码是作为web请求完成的 在您的例子中,Open Street Maps有一个功能,您可以在其中向其web服务发出请求,然后使用x

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

您可以使用

下面是一个如何获取城市名称的示例(为了简洁起见,省略了一些代码):

这可以通过将纬度/经度点转换为人类可读的地址来完成。通常,反向地理编码是作为web请求完成的

在您的例子中,Open Street Maps有一个功能,您可以在其中向其web服务发出请求,然后使用xml/json响应来获取城市名称

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

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

  • [纬度]是要进行反向地理编码的纬度点
  • [经度]是要进行反向地理编码的经度点
这将为您提供一个如下结果:

<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>

英国西米德兰郡伯明翰市怀尔德格林皮尔金顿大道135号,B72

.

是否有办法使用反转代码检索maxspeed?
<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>