• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Google GeoCode via simplexml

TecEye

New member
Hy Leute,

ich hatte vorher schon mit simplexml den GeoCode zu einer Adresse von Google gezogen, aber seit heute hat Google wohl irgendwas umgestellt.
Somit funktioniert der alte Link nicht mehr http://maps.google.com/maps/geo?output=xml&q=Berlin Deutschland

Ich habe aber bei den Developers einen neuen gefunden, den hier http://maps.googleapis.com/maps/api/geocode/xml?address=Berlin+Deutschland&sensor=false
Dieser liefert mir alles wichtige nämlich die Koordinaten

Allerdings scheine ich in meinem Skript was falsch zu machen, könnt ihr mir da ev helfen?
PHP:
function getGeoCode($adresse,$geo){
$request_url 	= "http://maps.googleapis.com/maps/api/geocode/xml?address=" . $adresse . "&sensor=false";
$xml 			= simplexml_load_file($request_url);
	if($geo == "lat"){ 		return $xml->GeocodeResponse->result->geometry->location->lat; }
	else if($geo == "lng"){ return $xml->GeocodeResponse->result->geometry->location->lng; }
	else{ return "faild"; }
}

$adresse1 = "Berlin+Deutschland";
echo "LAT: ".getGeoCode($adresse1,"lat")."<br />";
echo "LNG: ".getGeoCode($adresse1,"lng")."<br />";
 
Selbst ist der Mann :D
Ich stell mein fertiges skript mal zur Verfügung, weil in dieser art jetzt einige auf die Suche gehn werden (da die alte Anlaufstelle ja nicht mehr funzt)
PHP:
function getGeoCode($adresse,$geo){
	$adresse		= str_replace(" ", "+", $adresse);
	$adresse		= str_replace(",", "+", $adresse);
    $request_url 	= "http://maps.googleapis.com/maps/api/geocode/xml?address=".$adresse."&sensor=false";
    $xml 			= simplexml_load_file($request_url);
	$status			= $xml->status;
	if($status == "OK"){
		$lat	= $xml->result->geometry[0]->location[0]->lat;
		$lng	= $xml->result->geometry[0]->location[0]->lng;
		if($geo == "lat"){ 		return $lat; }
		else if($geo == "lng"){ return $lng; }
		else{ return "faild"; }
	}else{ return "faild"; }
}
$adresse1 = "Alexanderstr.14,Berlin Deutschland"; 
echo "LAT: ".getGeoCode($adresse1,"lat")."<br />"; 
echo "LNG: ".getGeoCode($adresse1,"lng")."<br />";
Funktioniert wunderbar, bin aber für jeden Verbesserungsvorschlag dankbar ;)
 
Nach meinen Informationen mag Google automatisierte Anfragen gar nicht. Es könnte zu überraschenden Antworten auf deine Anfragen kommen.
Schau doch mal hier rein: GeoNames

LG jspit
 
Du solltest deinen Suchstring auch noch durch (raw)urlencode() jagen, da du sonst schnell mal Probleme mit Sonderzeichen, wie Umlaute, bekommen kannst.
 
Würden die sonst ne Doku dazu bereitstellen wenn dem nicht so wäre? https://developers.google.com/maps/documentation/geocoding/?hl=de
Da steht doch:
Hinweis: Das Geocoding API darf nur in Verbindung mit einer Google-Karte verwendet werden, das heißt, das Abrufen von Geocodierungsergebnissen, die nicht auf einer Karte angezeigt werden, ist nicht zulässig. Alle Einzelheiten zur zulässigen Nutzung finden Sie im Abschnitt zu den Lizenzbeschränkungen in den Nutzungsbedingungen für das Google Maps API.
 
Mitunter kommt dann bei allen Mitarbeitern bei einer ganz normalen Suche bei Google nur ein Capcha mit:
Unsere Systeme haben ungewöhnlichen Datenverkehr aus Ihrem Computernetzwerk festgestellt.
Diese Seite überprüft, ob die Anfragen wirklich von Ihnen und nicht von einem Robot gesendet werden. Warum?

Kommt auch vor, wenn man halt eine IP zugewiesen bekommt, von der am Vortag ein ungewöhnlicher Datenverkehr registiert wurde.
 
Ja würde ja gerne die Geo-Positionierung einer Adresse gerne ohne Gep-Code anfrage lösen, aber das lässt die zu intigrierende API ja nicht zu, um die häufigen Anfragen jedoch zu vermeiden, werde ich beim speichern der Adresse direkt den Geo-Code mitspeichern
 
Zurück
Oben