2012-04-20 106 views
1

我有一個安卓應用程序可以查找您當前的位置,但我需要弄清楚哪些郵政編碼位於20英里的當前位置。什麼是找到這些信息的最佳方式?是否有公共API或Web服務?我可以輸入緯度/經度或郵政編碼。獲取緯度/經度附近的郵政編碼列表

+0

上班這實際上是反向地址解析的問題,這是將經緯度轉換爲可讀地址的過程。有一個Google API https://developers.google.com/maps/documentation/geocoding/這應該有助於開始。 – twain249 2012-04-20 13:30:58

回答

0

我會使用Haversine公式開始。使用從中得到的結果查找相對於該半徑的郵政編碼。

import com.google.android.maps.GeoPoint; 

public class DistanceCalculator { 

    private double Radius; 

    // R = earth's radius (mean radius = 6,371km) 
    // Constructor 
    DistanceCalculator(double R) { 
     Radius = R; 
    } 

    public double CalculationByDistance(GeoPoint StartP, GeoPoint EndP) { 
     double lat1 = StartP.getLatitudeE6()/1E6; 
     double lat2 = EndP.getLatitudeE6()/1E6; 
     double lon1 = StartP.getLongitudeE6()/1E6; 
     double lon2 = EndP.getLongitudeE6()/1E6; 
     double dLat = Math.toRadians(lat2-lat1); 
     double dLon = Math.toRadians(lon2-lon1); 
     double a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
     Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * 
     Math.sin(dLon/2) * Math.sin(dLon/2); 
     double c = 2 * Math.asin(Math.sqrt(a)); 
     return Radius * c; 
    } 
} 
0

有對此沒有API,作爲我,只要我知道,但你可以使用郵編數據基礎http://zips.sourceforge.net/來創建自己的數據庫與

相關問題