Геолокация Google API - долгота Использования и широта для получения адреса в текстовом поле?

Я заметил большую информацию о том, как получить Вашу внешность геолокации Google использования местоположения, на основе IP-адреса. Но я задаюсь вопросом, если и как я мог использовать этот сервис, чтобы ввести местоположение (долгота и широта) и возвратить текущий адрес, или по крайней мере город, состояние.

Я хотел бы сделать это в C#, но я буду работать с любым языком.

Совет?

19
задан Kumar PG 8 April 2017 в 09:58
поделиться

3 ответа

То, что вы описываете, называется обратным геокодированием . Google предоставляет API веб-службы геокодирования , который вы можете вызвать из своего серверного приложения (используя любой язык) для выполнения обратного геокодирования .

Например, следующий запрос:

http://maps.google.com/maps/api/geocode/xml?latlng=40.714224,-73.961452&sensor=false

... вернет ответ это выглядит следующим образом (усечено):

<GeocodeResponse> 
 <status>OK</status> 
 <result> 
  <type>street_address</type> 
  <formatted_address>277 Bedford Ave, Brooklyn, NY 11211, USA</formatted_address> 
  <address_component> 
   <long_name>277</long_name> 
   <short_name>277</short_name> 
   <type>street_number</type> 
  </address_component> 
  <address_component> 
   <long_name>Bedford Ave</long_name> 
   <short_name>Bedford Ave</short_name> 
   <type>route</type> 
  </address_component> 
  <address_component> 
   <long_name>Brooklyn</long_name> 
   <short_name>Brooklyn</short_name> 
   <type>sublocality</type> 
   <type>political</type> 
  </address_component> 
  <address_component> 
   <long_name>New York</long_name> 
   <short_name>New York</short_name> 
   <type>locality</type> 
   <type>political</type> 
  </address_component> 
  <address_component> 
   <long_name>Kings</long_name> 
   <short_name>Kings</short_name> 
   <type>administrative_area_level_2</type> 
   <type>political</type> 
  </address_component> 
  <address_component> 
   <long_name>New York</long_name> 
   <short_name>NY</short_name> 
   <type>administrative_area_level_1</type> 
   <type>political</type> 
  </address_component> 
  <address_component> 
   <long_name>United States</long_name> 
   <short_name>US</short_name> 
   <type>country</type> 
   <type>political</type> 
  </address_component> 
  <address_component> 
   <long_name>11211</long_name> 
   <short_name>11211</short_name> 
   <type>postal_code</type> 
  </address_component> 
  <geometry> 
   <location> 
    <lat>40.7142330</lat> 
    <lng>-73.9612910</lng> 
   </location> 
   <location_type>ROOFTOP</location_type> 
   <viewport> 
    <southwest> 
     <lat>40.7110854</lat> 
     <lng>-73.9644386</lng> 
    </southwest> 
    <northeast> 
     <lat>40.7173806</lat> 
     <lng>-73.9581434</lng> 
    </northeast> 
   </viewport> 
  </geometry> 
 </result> 
</GeocodeResponse> 

Однако имейте в виду, что Условия использования API Карт Google , похоже, запрещают хранение результатов , если только хранилище не действует как кеш для данных, которые будут использоваться в Google Maps. Вы можете связаться с Google и узнать о Google Maps API Premier , чтобы получить более гибкие условия использования в соответствии с вашими требованиями к геокодированию.

22
ответ дан 30 November 2019 в 03:16
поделиться

Вы пытаетесь выполнить обратное геокодирование (см. Ответ Дэниела).

Пример реализации на PHP:

/**
* reverse geocoding via google maps api
* convert lat/lon into a name
*/
function reverse_geocode($lat, $lon) {
    $url = "http://maps.google.com/maps/api/geocode/json?latlng=$lat,$lon&sensor=false";
    $data = json_decode(file_get_contents($url));
    if (!isset($data->results[0]->formatted_address)){
        return "unknown Place";
    }
    return $data->results[0]->formatted_address;
}
3
ответ дан 30 November 2019 в 03:16
поделиться

API Карт Google работают по протоколу http, поэтому отправка запроса с помощью get и последующий анализ запроса ... Это должно быть возможно на любом языке.

Например, в PHP:

$ret = file_get_contents("http://maps.google.com/maps/api/geocode/xml?address=" .
            urlencode($address) .
            "&sensor=false" .
            "&key=" . $this->key
    );

$xml = new SimpleXMLElement($ret);
$error = $xml->status;

То же самое работает для всех API.

1
ответ дан 30 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: