PHP Google Geocode-mit curl-sich weigern zu arbeiten
Ich bin derzeit versuchen zu Holen Sie sich die lat-und lng-Parameter eine Adresse, die durch die Nutzung der Google Geocode API in eine PHP-Seite.
Momentan habe ich folgenden code, aber irgendwie funktioniert es nicht über php beim kopieren der erzeugten Adresse in Google Chrome zu funktionieren scheint.
Kann jemand den Fehler im code unten?
Vielen Dank im Voraus!
Tom
====================================================
Der zurückgegebene Fehler ist:
( [error_message] => The 'sensor' parameter specified in the request must be set to either 'true' or 'false'. [results] => Array ( ) [status] => REQUEST_DENIED ) An error has occured: 1
Alten code mit veralteten Teile:
$googleQuery = $_POST['txtAdres'] . ',+' . $_POST['txtPostcode'] . '+' . $_POST['txtStad'] . ',+' . $_POST['txtLand'];
$googleQuery = str_replace(' ', '+', $googleQuery);
//retrieve the latitude & longitude from the address
$url = 'http://maps.googleapis.com/maps/api/geocode/json?address=' . urlencode($googleQuery) . '&sensor=false';
$url = htmlspecialchars($url);
echo $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch), true);
if ($response['status'] != 'OK') {
echo 'An error has occured: ' . print_r($response);
} else {
$geometry = $response['results'][0]['geometry'];
$longitude = $geometry['location']['lat'];
$latitude = $geometry['location']['lng'];
}
====================================================
EDIT 1 Hinzugefügt HTML-code auf jeder Webseite zu machen, arbeiten
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
BEARBEITEN 1 - Festen und funktionierenden code:
//create address string
$googleQuery = $_POST['txtAdres'] . ', ' . $_POST['txtPostcode'] . ' ' . $_POST['txtStad'] . ', ' . $_POST['txtLand'];
//retrieve the latitude & longitude from the address
$url = 'http://maps.googleapis.com/maps/api/geocode/json?address=' . urlencode($googleQuery) . '&sensor=false';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch), true);
if ($response['status'] != 'OK') {
echo 'An error has occured: ' . print_r($response);
} else {
$geometry = $response['results'][0]['geometry'];
$longitude = $geometry['location']['lat'];
$latitude = $geometry['location']['lng'];
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie ungültige
$url
. Nicht$url = htmlspecialchars($url);
vor dem Aufruf von CURL.Ändern:
(oder smth):
Edit 1:
Und Ihre Adresse generieren, ist ungültig. Statt:
tun:
Edit 2:
Hier gültig ist Beispiel:
$url
? p.s. Ich habe gerade getestet dieses script und es funktioniert für mich.str_replace()
ersetzt, die Räume zu+
und diese+
aus concating post-Daten in string; all dies geschieht durchurlecnode()
Funktion.var_dump($googleQuery);
?iconv
.habe dieses Problem innerhalb von ein CLI-Skript.
musste ich sicherstellen, dass meine Daten (was wurde Import aus einer CSV-Datei) wurde UTF-8-codiert:
sich auch ein string hatte ich auf pass von innerhalb des Skripts hatte ich zum konvertieren in ASCII-zuerst vor der Konvertierung zu UTF-8 (oder htmlentities, das das auch funktioniert):
oder