2016-02-16 106 views
0

我試圖對澳大利亞郵政編碼0821進行地理編碼,它不能可靠地識別北領地內存在的這個郵政編碼。 0820和0822工作正常。谷歌地圖地理編碼在澳大利亞郵政編碼0821只有

的我在做什麼

 var gm = google.maps; 
     var gc = new gm.Geocoder(); 
     var grq:google.maps.GeocoderRequest = { 
     address:s, region:"au" 
     }; 
     var m = /[0-9]{4}/.exec(s); 
     if(m && m.length == 1) 
     grq.componentRestrictions = { 
      country:'au'/*, postalCode:m[1]*/ 
     }; 
     gc.geocode(grq,(results, status)=>{ 
     if(status == gm.GeocoderStatus.OK) { 
      var latLng = results[0].geometry.location; 
      $.ajax({ 
      url:`${apiUrl}near/${latLng.lat()},${latLng.lng()}`, 
      success: (response)=>this.parseResult(response,latLng)}); 
     } else { 
      this.search.searchEnded(); 
      console.warn("Gecode Failed",results,status); 
      alert('Unable to find location, try entering more specific search'); 
     } 

這個例子https://google-developers.appspot.com/maps/documentation/javascript/examples/full/geocoding-simple似乎也顯示出類似的問題,而不是不定位0821

爲例,說明它在布宜諾斯艾利斯白羊座(搜索「澳大利亞0821」或「0821澳大利亞),搜索'澳大利亞0822'的作品發現雖然。

我也嘗試使用postalCode限制,這使事情變得更糟。

如何可靠地對郵編進行地理編碼?

回答

0

如果這是澳大利亞特定的,我建議你看看AusPost's postcode api,否則有很多API(http://www.zippopotam.us/)是很好的一個。

這可能只是谷歌系統中的一個錯誤,如果所有類似的郵政編碼正常工作,我可能會在其產品論壇中報告它。

1

var geocoder = new google.maps.Geocoder(); 
 
geocoder.geocode({ 
 
    componentRestrictions: { 
 
    country: 'AU', 
 
    postalCode: postcode 
 
    } 
 
}

+0

這個答案提供線索的解決方案,但並沒有解釋爲什麼OP不能「可靠的地理編碼產生後置」。 原因是GeoCode不知道給定的數字是指STREET NUMBER還是POSTCODE,除非將user3372176所示的過濾器添加到請求中。谷歌首先尋找街道號碼。編號較低的郵政編碼更可能與街道號碼匹配並指向WoopWoop中的地址 –