Географические координаты названия улиц

каким-либо образом (с API-интерфейсом отдыха будет потрясающим), чтобы получить название улицы, соответствующее географической координате? Я думаю, что это геокодирование, у google есть этот API? Im разработчик PHP.

Ex.

<?php cor="38.115583,13.37579"; echo(geoname(cor)); // this prints: Foro Umberto I - 90133 Palermo ?> 

Таким образом, выход функции – это название улицы, почтовый индекс и город. Спасибо за любые примеры справки и скриптов!

Related of "Географические координаты названия улиц"

Да, просто используйте функцию «Обратное геокодирование» в API Карт Google: http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding

Вот пример кода:

 $lat="38.115583"; $long = "13.37579"; $url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_ENCODING, ""); $curlData = curl_exec($curl); curl_close($curl); $address = json_decode($curlData); print_r($address); 

Вот моя функция PHP, которую я использовал для поиска обратного геокодирования для уличного адреса с использованием API MAP Google. Обратите внимание, что этот пример выводит данные из Google в JSON, но я делаю простой анализ в PHP.

 /* * Use Google Geocoding API to do a reverse address lookup from GPS coordinates */ function GetAddress( $lat, $lng ) { // Construct the Google Geocode API call // $URL = "http://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&sensor=false"; // Extract the location lat and lng values // $data = file( $URL ); foreach ($data as $line_num => $line) { if ( false != strstr( $line, "\"formatted_address\"" ) ) { $addr = substr( trim( $line ), 22, -2 ); break; } } return $addr; } 

Команда Эндрю в OpenGeoCode.Org

Кстати, у Google есть ограничения на использование их API в коммерческих целях. В принципе, вам нужно отобразить результат на карте google.

Вы также можете взглянуть на использование API PlaceFinder от Yahoo !, который предлагает обратное геокодирование. Минимальный пример вызова API (просьба вернуть легкий формат обмена данными du jour, JSON ) может выглядеть так:

 $url = 'http://where.yahooapis.com/geocode?location=55.948496,-3.198909&gflags=R&flags=J'; $response = json_decode(file_get_contents($url)); $location = $response->ResultSet->Results[0]; print_r($location); 

Что дает первый результат (надеюсь, есть один!), Который содержит такие свойства, как street , postal и city .


Другой способ использования API PlaceFinder – использовать YQL API Yahoo !, который позволяет использовать SQL-подобные запросы против «таблиц данных» (часто других API).

Такой запрос может выглядеть так:

 SELECT * FROM geo.placefinder WHERE text="55.948496,-3.198909" AND gflags="R" 

( Попробуйте это в консольном интерфейсе YQL )

Чтобы сделать вызов YQL с этим запросом, с PHP, очень похож на предыдущий пример и должен печатать ту же информацию.

 $query = 'SELECT * FROM geo.placefinder WHERE text="55.948496,-3.198909" AND gflags="R"'; $url = 'http://query.yahooapis.com/v1/public/yql?q='.urlencode($query).'&format=json'; $response = json_decode(file_get_contents($url)); $location = $response->query->results->Result; print_r($location); 

Взгляните сюда: http://www.geonames.org/

Как упоминает @Elijah, в моем последнем ответе есть много ограничений на API Карт, который я дал в своем последнем ответе. Фактически вы должны использовать его только для приложений Google Maps. Если это проблема, вы также можете попробовать использовать API AdWords. У него также есть аналогичная услуга, но Google взимает плату за него, поэтому есть меньше ограничений.