簡體   English   中英

從緯度,經度獲取郵政編碼?

[英]Get zip code from latitude, longitude?

我想從用戶當前位置(緯度,經度)獲取郵政編碼,我曾使用MKReverse Geocoder委托方法,但有時我無法獲得基於緯度和經度(有效值)的郵政編碼信息。 MKReverseGeocoder還有其他選擇嗎? ZipCode數據庫特定於國家,這就是我不想使用它們的原因。 還有其他想法或線索嗎?

謝謝

考慮GeoNames Web服務 它是Creative Commons歸屬許可下的完整地理編碼/反向地理編碼套件。 您可以下載他們的數據,也可以點擊他們的網絡服務。 最好的是,他們不需要任何API密鑰或許可證愚蠢 - 你只需點擊他們的網絡應用程序,然后就可以獲得數據。

下面是一個例子: http ://ws.geonames.org/findNearbyPostalCodesJSON?formatt = true&rat = 36&lng = -79.08這將為你返回一個JSON對象,用於北卡羅來納州教堂山區的郵政編碼。

它也是國際性的。 這里是英格蘭的西福德,唯一的區別是我發送的lat / lng對: http ://ws.geonames.org/findNearbyPostalCodesJSON?formatt = true&lalat = 50.5&lng = 0.08

然后你需要學習制作Web請求並解析JSON(如果你還沒有掌握這些東西),那么你就完成了。

這實際上是一個棘手的問題。 使用像GeoNames這樣的地理編碼解決方案很可能會導致很多查詢出現重大錯誤。 這樣做的原因是GeoNames通過在他們的數據庫中查找最接近您的查詢點的記錄,然后返回他們在該點記錄的郵政編碼。 當您的查詢點位於其數據庫中的記錄之上時,這非常有用,但否則會導致錯誤。 例如,如果他們最近的記錄在幾個街區之外的不同郵政編碼,你會得到錯誤的答案。

美國人口普查局創建了郵政編碼的地圖:

https://www.census.gov/geo/reference/zctas.html

請在該頁面上查看他們的說明。

我還參與了一個使用Census地圖的項目,該項目提供了一個API,用於返回給定緯度和經度的郵政編碼。 它是在:

http://askgeo.com

我們提供可以在您自己的服務器上運行的Web API和Java庫。 圖書館表現出色。 由於我們的網站提供的信息不僅僅是郵政編碼,您可以在這里閱讀我們的郵政編碼服務:

http://askgeo.com/database/UsZcta2010

您在此處閱讀了有關Web API的文檔:

http://askgeo.com/#web-api

對於這種類型的查詢,GeoNames方法存在根本缺陷。 如果要查找包含給定查詢點的多邊形,則需要包含多邊形的地圖,並且需要空間索引來提供快速查找。 GeoNames沒有。 AskGeo有兩個。

如果您有一個免費的數據庫(可從該網站獲得?只需搜索郵政編碼數據庫,您就會看到它)

然后,您可以對附近的緯度/長度運行內部SQL查詢測試。 這樣您就不必擔心許可Web服務了。

那你有三個選擇。 SQL BETWEEN語句,斜邊方程或Haversine。 Haversine是最好的,幸運的是它在其他地方的教程

示例代碼:

從結果[1] .formatted_address獲取Zipcode

https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM