Обратное геокодирование с помощью Google Map API и PHP для получения ближайшего местоположения с использованием широты и длинных координат - PullRequest
15 голосов
/ 13 января 2010

Мне нужна функция для получения ближайшего адреса или города из координат (широта, долгота) с помощью обратного геокодирования и карты Google Map API и php ... Пожалуйста, дайте пример кода

1 Ответ

34 голосов
/ 13 января 2010

Вам необходимо использовать метод getLocations для GClientGeocoder в API Карт Google

var point = new GLatLng (43,-75);
var geocoder = new GClientGeocoder();
geocoder.getLocations (point, function(result) {
    // access the address from the placemarks object
    alert (result.address);
    });

РЕДАКТИРОВАТЬ : ОК. Вы делаете это на стороне сервера. Это означает, что вам нужно использовать HTTP-сервис геокодирования . Для этого вам нужно будет сделать HTTP-запрос, используя формат URL, описанный в связанной статье. Вы можете разобрать ответ HTTP и вытащить адрес:

// set your API key here
$api_key = "";
// format this string with the appropriate latitude longitude
$url = 'http://maps.google.com/maps/geo?q=40.714224,-73.961452&output=json&sensor=true_or_false&key=' . $api_key;
// make the HTTP request
$data = @file_get_contents($url);
// parse the json response
$jsondata = json_decode($data,true);
// if we get a placemark array and the status was good, get the addres
if(is_array($jsondata )&& $jsondata ['Status']['code']==200)
{
      $addr = $jsondata ['Placemark'][0]['address'];
}

N.B. Условия обслуживания Google Maps прямо заявляют, что геокодирование данных без размещения результатов на карте Google запрещено.

...