2011-01-25 1 views
0

Это на PHP я следующую переменную на массивGoogle Maps вопрос, чтобы получить координаты в 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 ] } } ] }) 

Я использую массивы, взрывает и str_replace, чтобы получить -58.3731613, -34.6084175 в две переменные, Есть простой способ сделать это?

У меня есть дополнительный вопрос, что я делал, но, видимо, Google изменил что-то, потому что теперь у меня другой результат, который у меня был месяц назад, вопрос в том .... кто-нибудь знает, почему Google изменил что-то ?

Спасибо за все

Только в случае, если старый код, который используется для работы:

 $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

Мне кажется, что вы пытаетесь вручную проанализировать var_dump запроса геокодирования API Google Maps API 2.0 (устаревшего) в формате KML, который затем разбирался в массив на PHP. Не могли бы вы показать полный источник? Вероятно, это простое решение. –

+0

Спасибо, что ответили на Jonathan, я добавил какой-то мистический код = D – Saikios

ответ

1

Как насчет 3 строк кода? ;-)

$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; 

Пожалуйста, обратите внимание, что здесь мы предполагаем, у нас есть только одна пометка возвращается, если вы ожидаете больше, то цикл переменная $b['Placemark'], чтобы получить данные.

+0

Привет, я пробовал это, но я получаю предупреждение, Warning: file_get_contents (http://maps.google.com/maps/geo?q=1050+BRAVO Марио, + Капитал Федеральный, + Аргентина & oe = utf8 & key = MYKEEYYY !! У вас есть какие-либо подсказки для этого? – Saikios

+0

да, 'urlencode' был необходим ... попробуйте сейчас, пожалуйста, пожалуйста. – ifaour

+0

Спасибо, очень хорошо работает;) – Saikios

Смежные вопросы