2011-01-25 4 views
0

C'est en php je la variable suivante sur un tableauGoogle Maps question pour obtenir les coordonnées en php

Array ([0] => { "name": "BRAVO Mario1050 [1] => Capital Federal [2] => Argentina" [3] => "Status": { "code": 200 [4] => "request": "geocode" } [5] => "Placemark": [ { "id": "p1" [6] => "address": "Buenos Aires [7] => Capital Federal [8] => Argentina" [9] => "AddressDetails": { "Accuracy" : 4 [10] => "Country" : { "AdministrativeArea" : { "AdministrativeAreaName" : "Capital Federal" [11] => "Locality" : { "LocalityName" : "Ciudad Autónoma de Buenos Aires" } } [12] => "CountryName" : "Argentina" [13] => "CountryNameCode" : "AR" } } [14] => "ExtendedData": { "LatLonBox": { "north": -34.5349161 [15] => "south": -34.6818539 [16] => "east": -58.2451019 [17] => "west": -58.5012207 } } [18] => "Point": { "coordinates": [ -58.3731613 [19] => -34.6084175 [20] => 0 ] } } ] }) 

J'utilise des tableaux, et str_replace pour explose obtenir le -58,3731613, -34,6084175 en deux variables, Y a-t-il un moyen facile de faire ceci? J'ai une question supplémentaire à, Ce que j'ai fait fonctionnait, mais apparemment google change quelque chose parce que maintenant j'ai un résultat différent que j'avais il y a 1 mois, la question est .... est-ce que quelqu'un sait pourquoi google a changé quelque chose ?

Merci pour tout

Juste au cas où l'ancien code qui fonctionnait:

 $longitude = ""; 
     $latitude = ""; 
     $precision = ""; 
     //Three parts to the querystring: q is address, output is the format (
     $key = "googlekey"; 
     $address = urlencode(str_replace(',',' ',$calle).$altura.", ".$localidadList.", Argentina"); 
     $url = "http://maps.google.com/maps/geo?q=".$address."&output=csv&key=".$key; 
     $ch = curl_init(); 

     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_HEADER,0); 
     curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     $latitude= str_replace('Point','',$data[20]); 
     $latitude= str_replace('coordinates','',$latitude); 
     $latitude= str_replace('"','',$latitude); 
     $latitude= str_replace(':','',$latitude); 
     $latitude= str_replace('{','',$latitude); 
     $latitude= trim(str_replace('[','',$latitude)); 
     $longitude= trim(str_replace('}','',str_replace('"west": ','',$data[21]))); 
+0

Il me semble que vous essayez d'analyser manuellement le var_dump d'une requête de géocodage de Google Maps API 2.0 (obsolète) au format KML qui a ensuite été analysée dans un tableau en PHP. Pourriez-vous peut-être montrer la source complète? Il y a probablement une solution facile à cela plus haut. –

+0

Merci d'avoir répondu à Jonathan, j'ai ajouté du code mystérieux = D – Saikios

Répondre

1

Comment environ 3 lignes de code? ;-)

$b = file_get_contents("http://maps.google.com/maps/geo?q=". urlencode("1050+BRAVO Mario,+Capital Federal,+Argentina") ."&oe=utf8&key=abcdefg"); 
$b = json_decode($b, TRUE); 
list($longitude,$latitude) = $b['Placemark'][0]['Point']['coordinates']; 
echo "Longitude: " . $longitude . "<br />Latitude: " . $latitude; 

S'il vous plaît noter que ici, nous partons du principe que nous avons qu'un seul Placemark est revenu, si vous attendez plus, alors la variable boucle $b['Placemark'] pour obtenir vos données.

+0

Salut, j'ai essayé mais je reçois un avertissement, Attention: file_get_contents (http://maps.google.com/maps/geo?q=1050+BRAVO Mario, + Capital Federal, + Argentine & oe = utf8 & key = MYKEEYYY !! Avez-vous la moindre idée de cela? – Saikios

+0

ouais, 'urlencode' était nécessaire ... essayez maintenant s'il vous plaît – ifaour

+0

Merci beaucoup ça fonctionne très bien;) – Saikios

Questions connexes