我正在使用此功能获取数据库中某些地址的Lat en Lng:
function geocode($street,$city,$country) {
$straat = preg_replace('/ /', '+', $street);
$stad = preg_replace('/ /', '+', $city);
$land = preg_replace('/ /', '+', $country);
$addr = $straat . '+' . $stad . '+' . $land;
$apiuri = 'https://maps.googleapis.com/maps/api/geocode/json?address=' . $addr;
$geocode=file_get_contents($apiuri);
$output= json_decode($geocode);
$lat = $output->results[0]->geometry->location->lat;
$long = $output->results[0]->geometry->location->lng;
$LatLng['lat'] = $lat;
$LatLng['long'] = $long;
return $LatLng;
}
对于大多数地址而言,它的工作非常完美,但有些我得到{ "results" : [], "status" : "INVALID_REQUEST" }
,但是当复制粘贴时,$ apiuri工作正常。
我在$ straat,$ stad和$ land上尝试rawurlencode
和utf8_encode
但没有效果。
工作链接:https://maps.googleapis.com/maps/api/geocode/json?address =Široká+ 5 +布拉格+捷克+共和国(由上述功能输出)
错误可能与地址的编码有关,但我看不到在哪里或如何。