В одном из моих приложений php я должен узнать широту и долготу места с адреса.
Я пробовал этот код:
$json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region"); $json = json_decode($json); $lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'}; $long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
Но он показывает следующую ошибку:
Предупреждение: file_get_contents (http://maps.google.com/maps/api/geocode/json?address=technopark, Trivandrun, kerala, India & sensor = false & region = IND) [function.file-get-contents]: не удалось открыть поток : Ошибка HTTP-запроса! HTTP / 1.0 400 Bad Request в D: \ Projects \ lon.php в строке 4
Пожалуйста, помогите мне решить эту проблему.
Используйте curl
вместо file_get_contents
:
$address = "India+Panchkula"; $url = "http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=India"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_PROXYPORT, 3128); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $response = curl_exec($ch); curl_close($ch); $response_a = json_decode($response); echo $lat = $response_a->results[0]->geometry->location->lat; echo "<br />"; echo $long = $response_a->results[0]->geometry->location->lng;
$address = str_replace(" ", "+", $address);
Используйте вышеуказанный код перед файлом_get_content. означает, используйте следующий код
$address = str_replace(" ", "+", $address); $json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region"); $json = json_decode($json); $lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'}; $long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
и он будет работать уверенно. Поскольку адрес не поддерживает пробелы, он поддерживает только знак + вместо места.
// добавить urlencode на ваш адрес $ address = urlencode («технопарк, Trivandrun, kerala, India»); $ region = "IND"; $ json = file_get_contents ("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region"); echo $ json; $ decoded = json_decode ($ json); print_r ($ декодируется);
Две идеи:
$address = str_replace(" ", "+", $address); $json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region"); $json = json_decode($json); $lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'}; $long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
… и не забудьте «$ region» для работы кода:
$address = "Salzburg"; $address = str_replace(" ", "+", $address); $region = "Austria"; $json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$region"); $json = json_decode($json); $lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'}; $long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'}; echo $lat."</br>".$long;