Я использую эту функцию, чтобы получить 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 отлично работает при копировании.
Я старался rawurlencode
а также utf8_encode
на $ straat, $ stad и $ land, но без эффекта.
Рабочая ссылка: https://maps.googleapis.com/maps/api/geocode/json?address= Широка + 5 + Прага + Чехия + Республика (как указано в приведенной выше функции)
Ошибка, вероятно, с кодировкой адреса, но я не вижу, где и как.
Задача ещё не решена.
Других решений пока нет …