2013-09-24 70 views
3

我一直在瀏覽文檔和網絡上的所有例子,我找不到這個用例的例子。使用Google Maps API將郵政編碼轉換爲經度/緯度座標?

給定一個郵政編碼,我需要以經緯度座標形式粗略近似用戶的位置。我所有的是郵政編碼,沒有別的。

這可以使用Google Maps API完成嗎?如果不是,你會建議看什麼其他資源?

+0

可能重複的[從Zip Code獲取LatLng - Google Maps API](http://stackoverflow.com/questions/5585957/get-latlng-from-zip-code - 谷歌 - 地圖 - API)。您正在尋找的魔法詞是[「地理編碼」(將地址轉換爲地理座標的過程)](https://developers.google.com/maps/documentation/javascript/geocoding) – geocodezip

回答

2

您可以傳遞任何文本作爲地址解析器的地址碼。如果地理編碼成功,您應該獲得一組結果。

從此,您可以選擇第一個結果或遍歷數組。它的每個元素應該包含一個地址對象,並且郵政編碼是該obj上的一個可選字段。

請記住,usps郵編不是點或形狀。它們是點的數組,並且使用這些點作爲頂點繪製的多邊形的質心可能沒有任何特殊含義。

0

也許你可以用下面的腳本由PHP這樣做:

function getLnt($zip){ 
    $url = "http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($zip)."&sensor=false"; 

    $result_string = file_get_contents($url); 
    $result = json_decode($result_string, true); 

    $result1[]=$result['results'][0]; 
    $result2[]=$result1[0]['geometry']; 
    $result3[]=$result2[0]['location']; 
    return $result3[0]; 
} 

如果調用此函數(*我過濾掉字符之間的空間,這是沒有必要的):

$coords = str_replace(' ','',$foo->zipcode);* 
$val = getLnt($coords); 

/* print latitude & longitude for example */ 
print $val['lat']; 
print $val['lng']; 

function initialize(){ 
    var myLatlng = new google.maps.LatLng(<?= $val['lat'] ?>,<?= $val['lng'] ?>); 
    var mapOptions = { 
    zoom: 14, 
    center: myLatlng, 
    disableDefaultUI: true, 
    scrollwheel: false, 
    } 
    var map = new google.maps.Map(document.getElementById('propMap'), mapOptions); 

    var marker = new google.maps.Marker({ 
     position: myLatlng, 
     map: map, 
     title: 'title of location', 
     icon: iconBase + 'google-marker.png' 
    }); 
} 

注:

那之後ü可以用你喜歡谷歌地圖腳本混合呢?這對我來說工作得很好,但米aybe有更好的方法來做到這一點;-)