【发布时间】:2012-06-06 23:32:57
【问题描述】:
我正在使用 OpenLayers + OpenStreetMaps 开发在线地图应用程序。
我需要帮助在 javascript(或 php)中实现一个简单的反向地理编码函数,该函数接收纬度和经度并返回一个地址。
如果可能,我想与 Nominatim 合作。我不想使用 Google、Bing 或 CloudMade 或其他专有解决方案。
这个 link 返回一个合理的响应,我使用 simple_html_dom.php 来分解结果,但它是一个丑陋的解决方案。
<?php
include('simple_html_dom.php');
$url = "http://nominatim.openstreetmap.org/reverse?format=xml&lat=-23.56320001&lon=-46.66140002&zoom=27&addressdetails=1";
$html = file_get_html($url);
foreach ($html->find('road') as $element ) {
echo $element;
}
?>
有什么更优雅的解决方案的建议吗?
注意:自 2015 年 10 月起,请求必须包含 valid email,以便“提供您的应用程序的充分标识”。
如果没有邮件,返回码不会是 xml 或 json 格式,而是error 509 "Bandwidth Exceeded",请尝试使用 html_dom 库进行抓取。
$url = "http://nominatim.openstreetmap.org/reverse?email=myemail@myserver.com&format=xml&lat=-23.56320001&lon=-46.66140002&zoom=27&addressdetails=1";
【问题讨论】:
-
我的第一个“真正”金徽章。对我来说,超过 10K 的浏览量反映了不可否认的相关性。谢了。
标签: openlayers openstreetmap reverse-geocoding nominatim