2011-02-02 4 views
1


Я работаю над API Google Map API (версия 3) и более точно на обратной геолокации. С помощью the official documentation мне удалось выполнить обратное геокодирование, я нашел адрес, соответствующий координатам широты и долготы.
Но я не могу найти, как достичь имени, связанного с адресом. Является ли это возможным? Как это можно сделать?Обратное геокодирование с API Google Map

Спасибо.
Камилла.

+1

название чего? пожалуйста, укажите пример. – dogbane

+0

Например, я отправляю в API карт Google координаты «46.1124, 1.245», после чего он возвращает ассоциированные адреса. Я бы хотел, чтобы API дал мне название магазина или что-то еще по этому адресу. Является ли это возможным ? Благодарю. – craymond

+0

Вы хотите попытаться извлечь информацию из результата возврата? – ifaour

ответ

2

Вам действительно нужно петлю и сделать несколько проверок, что Google нашел в этих точках небольшой скрипт на самом деле читает/цикл возвращаемые данные будут (в PHP):

<?php 
$data = json_decode(file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=46.1124,1.245&sensor=true")); 
if($data->status == "OK") { 
    if(count($data->results)) { 
     foreach($data->results as $result) { 
      echo $result->formatted_address . "<br />"; 
     } 
    } 
} else { 
    // error 
} 
?> 

Теперь на основе документации :

Обратите внимание, что обратный геокодер возвратил несколько результатов. ... и т.д.

И:

Как правило, адреса возвращаются из наиболее характерных для наименее конкретным; более точный адрес является наиболее известный результат ... и т.д.

Вам нужно только первый результат, чтобы получить то, что вы хотите (или, по крайней мере, искать его там $data->results[0]->.
Так что чтение из types и основанный на том, что вы можете проверить, если результат, который вы хотите присутствовать или нет:.

<?php 
$data = json_decode(file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=46.1124,1.245&sensor=true")); 
if($data->status == "OK") { 
    if(count($data->results)) { 
     foreach($data->results[0]->address_components as $component) { 
      if(in_array("premise",$component->types) || in_array("route",$component->types) || in_array("park",$component->types)) { 
       echo $component->long_name . "<br />"; 
      } 
     } 
    } 
} else { 
    // error 
} 
?> 
+0

Привет, я попробую ваше решение ifaour. Cheers – craymond

+0

просто интересно, почему это было PHP-решение, а не решение JS? –

0

Google Map API имеет версию релиз бета места поиска API я думаю, что это то, что ищете в основном,. вы передаете lat/lng или адрес, и google делает обратный поиск th e адрес к названию места (если его в его базе данных).

Смотрите их документации по адресу: http://code.google.com/apis/maps/documentation/places/

Отрывок из их интро на Places API:

Места API имеет два основных типа запросов, которые связаны: Место поиска запросов и сведения о месте запросов. Запрос места поиска инициирует запрос «мест» вокруг предоставленного местоположения, часто предоставляемый через геолокацию (чтобы пользователь мог выполнить поиск места, в котором они находятся в настоящее время, или мест поблизости). API-интерфейс Places возвращает список мест-кандидатов, которые находятся рядом с предоставленным местоположением, и затем пользователь может инициировать запрос сведений о месте на определенном объекте, который возвращается в исходном поиске.

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