2012-02-19 191 views
1

我'試圖測量兩個座標之間的距離,我已經實現了半正矢函數,就像這樣:測量距離

package Services; 

public class Route { 

private double latitude1; 
private double longitude1; 
private double latitude2; 
private double longitude2; 


public Route(double latitude1, double longitude1, double latitude2, double longitude2) { 

    this.latitude1 = latitude1; 
    this.longitude1 = longitude1; 
    this.latitude2 = latitude2; 
    this.longitude2 = longitude2; 
} 

public double measureDistance() { 

    double earthRadius = 3958.75; 
    double dLat = Math.toRadians(latitude2-latitude1); 
    double dLng = Math.toRadians(longitude2-longitude1); 
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
        Math.cos(Math.toRadians(latitude1)) * Math.cos(Math.toRadians(latitude2)) * 
        Math.sin(dLng/2) * Math.sin(dLng/2); 

    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    double dist = earthRadius * c; 

    return dist; 
} 
} 

的代碼工作正常,並ouputting東西。但是,當我使用半夏公式時,代碼只是衡量天際線的距離,而不是道路,如果你知道我的意思。有沒有什麼可能的方式來衡量像谷歌地圖的距離呢?沒有使用谷歌地圖API,suddly谷歌在一天之內2500 API調用後需要現金..

+0

http://developer.mapquest.com/web/tools/getting-started/terms-overview檢查mapquest出來,看起來很有希望。 – L7ColWinters 2012-02-19 13:37:15

回答

0

Bing地圖確實有使用額度,然而這並不適用於移動應用。必應地圖是絕對值得研究的。您可以通過以下兩種方式之一在Android上使用Bing地圖。首先是使用Bing Maps Android SDK:http://bingmapsandroidsdk.codeplex.com/ 第二個是使用PhoneGap的Bing Maps V7 AJAX控件。