Обратное геокодирование с помощью Google Map API - PullRequest
1 голос
/ 02 февраля 2011


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

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

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Вам действительно нужно зациклить и сделать несколько проверок того, что 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]->.
Так чтопрочитайте типов и на основании этого вы можете проверить, хотите ли вы получить результат или нет:

<?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 голосов
/ 18 февраля 2011

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

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

Выдержка из их введения в API Адресов:

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

...