Ich habe das nun versucht mal einzubauen. Leider klappt es nicht, die Längen- und Breitengrade werden nicht herausgeschnitten und als die entsprechenden Variablen in die DB geschrieben.
Es bleibt alles wie vorher ohne Fehlermeldung oder ähnliches.
CODE
<?php
include ('global.php');
$key = "ABQIAAAA6hN...";
$query = "SELECT * FROM tankstellen WHERE tank_id > 0 AND tank_id < 19000 AND tank_laenge=0 and tank_breite=0";
$sql = mysql_query($query) or die($error);
while( $erg = mysql_fetch_object($sql) )
{
$q = "".utf8_encode($erg->tank_adr).",+".utf8_encode($erg->tank_plz).",+".utf8_encode($erg->tank_stadt)."";
// Ermitteln der Koordinaten
$geo = file('http://maps.google.com/maps/geo?q='.rawurlencode($q).'&amp;output=csv&amp;key='.$k);
if($geo) {
for($i=0;$i<55;$i++)
{
$start = '"coordinates": [ ';
if (substr($geo[$i], 0, strlen($start)) == $start)
{
$array = substr($geo[$i], 0, strlen($start));
$array[1] = str_replace(' ','',$array[1]);
$array[1] = str_replace(']','',$array[1]);
$koordinatenarray = explode(',', $array[1]);
$breite = $koordinatenarray[1];
$laenge = $koordinatenarray[0];
$updatequery = "UPDATE tankstellen SET tank_laenge='".$laenge."', tank_breite='".$breite."' WHERE tank_id='".$erg->tank_id."' ";
$updatesql = mysql_query($updatequery) or die($error);
}
}
}
}?>
Die angegebene Datei, die Google Maps zurückgibt gibt z.B. folgenden Inhalt zurück, wobei nicht immer Koordinaten zurückgegeben werden und nicht immer in der selben Zeile. Die Zeile in der die Koordinaten stehen, sieht aber immer gleich aus.
CODE
{
"name": "Krefelder Str. 225 52070 Aachen",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "Krefelder Straße 225, 52070 Aachen, Deutschland",
"AddressDetails": {
"Accuracy" : 8,
"Country" : {
"AdministrativeArea" : {
"AdministrativeAreaName" : "North Rhine-Westphalia",
"SubAdministrativeArea" : {
"Locality" : {
"DependentLocality" : {
"DependentLocalityName" : "Aachen",
"PostalCode" : {
"PostalCodeNumber" : "52070"
},
"Thoroughfare" : {
"ThoroughfareName" : "Krefelder Straße 225"
}
},
"LocalityName" : "Aachen"
},
"SubAdministrativeAreaName" : "Aachen"
}
},
"CountryName" : "Germany",
"CountryNameCode" : "DE"
}
},
"ExtendedData": {
"LatLonBox": {
"north": 50.8013676,
"south": 50.7950724,
"east": 6.1074376,
"west": 6.1011424
}
},
"Point": {
"coordinates": [ 6.1042900, 50.7982200, 0 ]
}
} ]
}