【发布时间】:2015-06-10 06:18:18
【问题描述】:
我正在使用此代码 sn-p 使用 Google Geolocation API 对地址进行地理编码:
<?php
$address = "Frazione Levà - 16030 Sori (GE)";
$url = 'http://maps.google.com/maps/api/geocode/xml?address='.urlencode($address).'&sensor=false';
echo $url."\n";
$xml = file_get_contents($url);
var_dump($xml);
?>
echo 命令显示调用的 URL 是:
http://maps.google.com/maps/api/geocode/xml?address=Frazione+Lev%C3%A0+-+16030+Sori+%28GE%29&sensor=false
var_dump 命令显示的结果是:
string(107) "<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
<status>ZERO_RESULTS</status>
</GeocodeResponse>
"
所以地址似乎无法定位。
如果我从浏览器调用与上面完全相同的 URL (http://maps.google.com/maps/api/geocode/xml?address=Frazione+Lev%C3%A0+-+16030+Sori+%28GE%29&sensor=false),我会得到完全不同的结果(地址已正确定位):
<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
<status>OK</status>
...
这怎么可能,我该如何解决?我需要通过 PHP 定位地址。
请注意,我每天都在循环中使用相同的代码 sn-p 来定位数百个地址,并且大多数地址都可以正常工作;仅在某些地址上显示此类问题。
【问题讨论】:
-
在我的浏览器中,该 URL 返回
ZERO_RESULTS响应。 -
@r3wt 已经用 rawurlencode 试过了,很遗憾没有用
-
@EdCottrell 在我的 IE、FF 和 Chrome 中我得到了 OK 回复。怎么可能?见截图:snag.gy/K3vsl.jpg
-
@EdCottrell 也从我的手机 3G 连接(另一个提供商,另一个 IP,...)尝试了该 URL,我也得到了 OK 回复