2

我正在使用Nominatim反向地理编码服务从纬度和经度获取地址。然后,将结果存储在 Mysql 数据库中。编码如下:

http://jsfiddle.net/GWL7A/171/

返回的地址是本地语言,例如示例中是中文。并且存储的数据不可读,因为:

"麒麟山新æ‘, 惠æ¥åŽ¿, 广东, 中åŽäººæ°‘共和国/China"
  1. 是否可以使地址以英文返回。
  2. 如果不可能,如何将数据存储到数据库中,以便在检索并在 Web UI 中显示时,返回为中文单词?它不能仅限于中文单词,因为它可能是阿富汗、泰国、越南或其他国家的地址。

谢谢你。

4

2 回答 2

1

有问题的对象在OSM 中还没有国际化,所以 nominatim 只能给你它的原始名称(中文)。如果您真的需要“英文”/拉丁文名称,您可能必须自己进行转录。我想人们可以在那里找到一些汉语拼音转录库……</p>

顺便说一句:将字符串添加到数据库时,请确保使用正确的字符集。OSM 使用的是 utf-8。

于 2013-08-20T06:45:23.073 回答
0

您可以在 API 末尾使用&accept-language=es;q=0.8,de;q=0.4,en;q=0.2 :

https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=33.6321882&lon=72.8587481&accept-language=es;q=0.8,de;q=0.4,en;q=0.2

这会给你以英文返回的结果地址。

上面的 URL 给出了结果:

{"place_id":138192283,"licence":"数据 © OpenStreetMap 贡献者,ODbL 1.0。https : //osm.org/copyright ","osm_type":"way","osm_id":263218431,"lat":" 33.6328352161182","lon":"72.8584455708076","place_rank":26,"category":"highway","type":"residential","importance":0.1,"addresstype":"road","name" :null,"display_name":"E 18, F-17, Dhok Minda, Islamabad, Pakistán","address":{"neighbourhood":"E 18","suburb":"F-17","village" :"Dhok Minda","state":"Islamabad","country":"Pakistán","country_code":"pk"},"boundingbox":["33.6324874","33.6342918","72.8577017","72.8614997"]}

不使用&accept-language=es;q=0.8,de;q=0.4,en;q=0.2

JSON 响应来自 URDU:

{"place_id":138192283,"licence":"数据 © OpenStreetMap 贡献者,ODbL 1.0。https : //osm.org/copyright ","osm_type":"way","osm_id":263218431,"lat":" 33.6328352161182","lon":"72.8584455708076","place_rank":26,"category":"highway","type":"residential","importance":0.1,"addresstype":"road","name" :null,"display_name":"E 18, F-17, Dhok Minda, وفاقی دارالحکومت اسلام آباد, Pakistan","address":{"neighbourhood":"E 18","suburb":"F-17", "村庄":"Dhok Minda","州":"وفاقی دارالحکومت اسلام آباد","国家":"巴基斯坦","country_code":"pk"},"boundingbox":["33.6324874","33.6342918","72.8577017","72.8614997"]}

网址:

https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=33.6321882&lon=72.8587481
于 2019-07-25T05:54:30.890 回答