2012-02-19 162 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控件。