2009-09-18 4 views
2

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

Пример в actionscript, что очень полезно для меня. Потому что я делаю проект в Flex.

С уважением Zee

+2

Вы говорите об обратном геокодировании. вы можете запросить бесплатный webservice GeoNames.org для lat/lon почтового индекса –

ответ

2

У вас есть доступ к длинным/широчайшей базе данных? Если нет, я считаю, что вы можете использовать API карт google для этого поиска.

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

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

2

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

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

Приветствия, Эрик

1

Есть several places to get zip code databases, в нескольких форматах. Загрузите его в свои любимые РСУБД и запросите прочь.

В качестве альтернативы вы можете использовать чужую веб-службу, чтобы найти для себя ценность. В других ответах размещены возможные веб-сервисы; также geocoder.us похоже, есть поддержка для ZIP code lookup сейчас.

2

Я получил мой решить вы также можете

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; 
    } 
} 
0

Существует в настоящее время является лучшим решением для этого с использованием самых последних Google Maps API (v3). Ниже приведен слегка измененный пример от multiplesources. Я должен отдать им большую часть кредитов. Это 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); 
0

Самый простой способ - использовать GoogleMap Api. Скажем, у вас есть zipcode в переменном $ 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 - объект с широтой и долготой.

Смежные вопросы