0

This is on php I have the following variable on an array

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 ] } } ] } ) 

I am using arrays, explodes and str_replace to obtain the -58.3731613, -34.6084175 into two variables, is there an easy way to do this?

I have an extra question to, What I did was working, but apparently google change something because now I have a different result that I had 1 month ago, the question is .... does anybody know why google changed something?

Thanks for everything

Just in case old code that used to work:

        $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])));
Saikios
  • 3,623
  • 7
  • 37
  • 51
  • It looks to me like you're trying to manually parse the var_dump of a Google Maps API 2.0 (deprecated) geocode request in KML format that was then parsed into an array in PHP. Could you perhaps show the full source? There's probably an easy solution to this further up. – Jonathan Amend Jan 25 '11 at 21:25
  • Thanks for answering Jonathan, I added some misterious code =D – Saikios Jan 25 '11 at 22:39

1 Answers1

1

How about 3 lines of 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;

Please note that here, we are assuming we only have ONE Placemark returned, if you are expecting more, then loop the $b['Placemark'] variable to get your data.

ifaour
  • 38,035
  • 12
  • 72
  • 79
  • Hi, I tried this but I'm getting a warning, Warning: file_get_contents(http://maps.google.com/maps/geo?q=1050+BRAVO Mario,+Capital Federal,+Argentina&oe=utf8&key=MYKEEYYY!! Do you have any clue for this? – Saikios Jan 27 '11 at 14:16