Как конвертировать почтовый индекс в долготу и широту? - PullRequest
2 голосов
/ 19 сентября 2009

Я хочу найти долготу и широту места с помощью почтового индекса. Может кто-нибудь сказать мне, как это сделать?

Пример в ActionScript, который может быть очень полезным для меня. Потому что я делаю проект во Flex.

С уважением Zee

Ответы [ 6 ]

2 голосов
/ 30 июля 2010

Я получил свое решение, вы также можете

function getLatLong($code) {
  $mapsApiKey = 'ABQIAAAAsV7S85DtCo0H9T4zv19FoRTdT40ApbWAnDYRE0-JyP5I6Ha9-xT9G5hCQO5UtOKSH5M3qhp5OXiWaA';
  $query = "http://maps.google.co.uk/maps/geo?q=".urlencode($code)."&output=json&key=".$mapsApiKey;
  $data = file_get_contents($query);
  // if data returned
  if($data) {
    // convert into readable format
    $data = json_decode($data);
    $long = $data->Placemark[0]->Point->coordinates[0];
    $lat = $data->Placemark[0]->Point->coordinates[1];
    return array('Latitude'=>$lat, 'Longitude'=>$long);
  } else {
    return false;
  }
}
2 голосов
/ 19 сентября 2009

Если вы ищете геокодирование по требованию, используйте Google. Они предоставляют простую версию веб-службы pox.

Я недавно написал блог об этом. Проверьте эту ссылку для пошаговых инструкций по использованию этого простого геокодирования.

Ура, Eric

2 голосов
/ 19 сентября 2009

У вас есть доступ к базе данных long / lat? если нет, я думаю, что вы можете использовать API Google Maps для этого поиска.

Ох .. Я только что заметил ответ Криса. Я не знаком с геонами. Возможно, вы также захотите ознакомиться с "http://freegeographytools.com/", который имеет массу ресурсов геокодирования, GPS и т. Д. Для целого ряда проектов.

Аааа ... Я только что посетил блог Эрика. Это отлично! Я обязательно свяжусь с Google для получения дополнительной информации в будущем проекте.

1 голос
/ 19 сентября 2009

Есть несколько мест для получения баз данных почтового индекса , в нескольких форматах. Загрузите его в свою любимую СУБД и отправьте запрос.

Кроме того, вы можете использовать чужой веб-сервис, чтобы найти значение для вас. Другие ответы опубликовали возможные веб-сервисы; Кроме того, geocoder.us теперь также поддерживает поиск по почтовому индексу .

0 голосов
/ 20 мая 2014

Самый простой выход - использовать GoogleMap Api. Допустим, у вас есть почтовый индекс в переменной $ zipcode.

$latlongUrl = 'http://maps.googleapis.com/maps/api/geocode/json?components=postal_code:'.$zipcode;

    $data = file_get_contents($latlongUrl); // you will get string data
    $data = (json_decode($data)); // convert it into object with json_decode
    $location = ($data->results[0]->geometry->location); // get location object

$ location - это объект со значениями широты и долготы.

0 голосов
/ 22 августа 2013

Теперь есть лучшее решение для этого, использующее самый последний API Карт Google (v3). Ниже приведен слегка измененный пример из нескольких источников . Я должен отдать им большую часть кредита. Это PHP, использующий cURL для получения данных из Google, но вы также можете использовать Ajax.

function address_lookup($string){

   $string = str_replace (" ", "+", urlencode($string));
   $details_url = "http://maps.googleapis.com/maps/api/geocode/json?address=".$string."&sensor=false";

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $details_url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $response = json_decode(curl_exec($ch), true);

   // If Status Code is ZERO_RESULTS, OVER_QUERY_LIMIT, REQUEST_DENIED or INVALID_REQUEST
   if ($response['status'] != 'OK') {
    return null;
   }

   $geometry = $response['results'][0]['geometry']['location'];

    $array = array(
        'lat'     => $geometry['lat'],
        'lng'     => $geometry['lng'],
        'state'   => $response['results'][0]['address_components'][3]['short_name'],
        'address' => $response['results'][0]['formatted_address']
    );

    return $array;

}

$zip= '01742';

$array = address_lookup($zip);
print_r($array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...