【问题标题】:Why am I Getting This GeoCode Error为什么我会收到此地理编码错误
【发布时间】:2017-07-24 07:05:36
【问题描述】:

当我尝试在我的网站上发帖时,这就是我所得到的。我需要做什么来修复?

警告:file_get_contents(http://maps.google.com/maps/api/geocode/json?address=):打开流失败:HTTP 请求失败!第 351 行 /home/dfwwrightimc/public_html/wp-content/themes/visitdfw/functions.php 中的 HTTP/1.0 400 错误请求

function geo_lat_long($address) {
    $address1 = str_replace(" ","+",$address);
    $address1 = str_replace("&","%26",$address1);
    $json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address1");
    $json = json_decode($json);
    $lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
    $long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
    return array('lat' => $lat, 'long' => $long);
}

【问题讨论】:

  • 只是让您知道您不必将{'results'} 与 std 对象一起使用,除非它们中包含不受支持的符号(例如破折号-)。你可以去$json->results[0]->geometry->location->lat
  • 也许您应该使用http://maps.googleapis.com/maps/api/geocode/ 中指定的documentation

标签: php wordpress google-maps google-maps-api-3


【解决方案1】:

检查您是如何调用geo_lat_long() 函数的。传入的地址是否正确?由于错误消息中的 URL 以 ?address= 结尾且没有任何值,因此看起来 $address1 为空。

【讨论】:

  • 我是新手,那么价值是多少?
【解决方案2】:

更改以下行:

$address1 = str_replace(" ","+",$address);
$address1 = str_replace("&","%26",$address1);
$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address1");

$address1 = urlencode ( $address );
$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address1");

然后再试一次。

解释:错误Bad Request与不正确的URL有关。

urlencode — URL-encodes string

string urlencode ( string $str )

此函数在对要在 URL 的查询部分中使用的字符串进行编码时很方便,作为将变量传递到下一页的便捷方式。

【讨论】:

  • 现在,当我进行编辑时,我得到了这个:警告:file_get_contents(maps.google.com/maps/api/geocode/json?address=):打开流失败:HTTP 请求失败!第 350 行 /home/dfwwrightimc/public_html/wp-content/themes/visitdfw/functions.php 中的 HTTP/1.0 400 错误请求
  • @johnc 是否有正在传递的地址?你可以检查吗?将 URL 存储在字符串中并预先回显 - 看看这个没有地址被传递?
猜你喜欢
  • 2012-03-13
  • 1970-01-01
  • 2018-06-22
  • 2016-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
相关资源
最近更新 更多