我正在尝试测量两个坐标之间的距离,我已经实现了半正功能,就像这样:
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;
}
}
代码工作正常并且输出了一些东西。但是当我使用hasrsine公式时,代码只测量天际线的距离,而不是道路,如果你知道我的意思。有没有可能像谷歌地图那样测量距离的方法呢?如果不使用谷歌地图API,那么在每天2500次API调用之后,谷歌就会拿走现金......
答案 0 :(得分:2)
Google Maps API定价基本上只影响网络地图:http://code.google.com/apis/maps/faq.html#usage_apis
Google地图for Android API仍然是免费的。
OTOH,Android版Google地图中没有路由或导航功能,因此无法使用此API计算路线距离。
另外,您可能会发现这个方便:Geographical distance
答案 1 :(得分:1)
你应该试试Bing Maps Android SDK。他们没有明确的使用配额。
答案 2 :(得分:0)
Bing Maps确实有使用配额,但这不适用于移动应用。 Bing Maps绝对值得研究。您可以通过以下两种方式之一使用Bing Maps with Android。首先是使用Bing Maps Android SDK:http://bingmapsandroidsdk.codeplex.com/ 第二种是使用Bing Maps V7 AJAX控件和PhoneGap。