打开街道地图地址解码

时间:2013-08-20 01:33:43

标签: mysql character-encoding openstreetmap

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

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

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

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

2 个答案:

答案 0 :(得分:1)

object in question尚未在OSM中国际化,所以nominatim只能给你原来的名字(中文)。 如果你真的需要“英文”/拉丁文字的名称,你可能需要自己做转录。我想有人可以在那里找到一些han - pinyin转录库......

btw:确保在将字符串添加到数据库时使用正确的字符集。 OSM正在使用utf-8。

答案 1 :(得分: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,“许可证”:“数据©OpenStreetMap投稿人,   ODbL 1.0。   https://osm.org/copyright“,” osm_type“:” way“,” osm_id“:263218431,” lat“:” 33.6328352161182“,” lon“:” 72.8584455708076“,” place_rank“:26,” category“:”高速公路“ ,“类型”:“住宅”,“重要性”:0.1,“地址类型”:“道路”,“名称”:空,“显示名称”:“ E   18,F-17,Dhok Minda,伊斯兰堡,   巴基斯坦”,“地址”:{“邻居”:“ E   18“,”郊区“:” F-17“,”乡村“:” Dok   Minda“,” state“:”伊斯兰堡“,” country“:”巴基斯坦“,” 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,“许可证”:“数据©OpenStreetMap投稿人,   ODbL 1.0。   https://osm.org/copyright“,” osm_type“:” way“,” osm_id“:263218431,” lat“:” 33.6328352161182“,” lon“:” 72.8584455708076“,” place_rank“:26,” category“:”高速公路“ ,“类型”:“住宅”,“重要性”:0.1,“地址类型”:“道路”,“名称”:空,“显示名称”:“ E   18,F-17,Dhok Minda,وفاقیدارالحکومتاسلامآباد,   巴基斯坦”,“地址”:{“邻居”:“ E   18“,”郊区“:” F-17“,”村庄“:” Dhok Minda“,”州“:”وفاقیدارالحکومت   اسلام   آباد“,”国家“:”巴基斯坦“,”国家代码“:” pk“},” boundingbox“:[” 33.6324874“,” 33.6342918“,” 72.8577017“,” 72.8614997“]}

URL:

https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=33.6321882&lon=72.8587481