Java 计算Google Maps v2上当前位置和标记之间的距离
我是新来的……请帮帮我 我想开发android应用程序,计算用户当前位置和标记之间的距离。它将计算用户触摸制造商时的距离。我想使用哈弗森公式,但我不知道如何在公式中输入当前位置和标记坐标……例如,StartP将是我的当前位置坐标,EndP将是我的标记坐标Java 计算Google Maps v2上当前位置和标记之间的距离,java,android,google-maps,haversine,Java,Android,Google Maps,Haversine,我是新来的……请帮帮我 我想开发android应用程序,计算用户当前位置和标记之间的距离。它将计算用户触摸制造商时的距离。我想使用哈弗森公式,但我不知道如何在公式中输入当前位置和标记坐标……例如,StartP将是我的当前位置坐标,EndP将是我的标记坐标 public double CalculationByDistance(LatLng StartP, LatLng EndP) { int Radius=6371;//radius of earth in Km
public double CalculationByDistance(LatLng StartP, LatLng EndP) {
int Radius=6371;//radius of earth in Km
double lat1 = StartP.latitude;
double lat2 = EndP.latitude;
double lon1 = StartP.longitude;
double lon2 = EndP.longitude;
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));
double valueResult= Radius*c;
double km=valueResult/1;
DecimalFormat newFormat = new DecimalFormat("####");
int kmInDec = Integer.valueOf(newFormat.format(km));
double meter=valueResult%1000;
int meterInDec= Integer.valueOf(newFormat.format(meter));
Log.i("Radius Value",""+valueResult+" KM "+kmInDec+" Meter "+meterInDec);
return Radius * c;
}
公式接受的参数类型为
LatLng
。现在您还没有指定代码中的任何位置。但是在函数本身中,你会发现你给函数的只是起点和终点的纬度和经度。因此,如果您在输入此函数时遇到困难,您可以这样做。
该函数要求纬度和经度采用双值形式。从地图上得到的是纬度和经度的双重值。 因此,您可以像这样直接将它们传递给这个函数
public double CalculationByDistance(double latitude1, double longitude1, double latitude2, double longitude2) {
int Radius=6371;//radius of earth in Km
double lat1 = latitude1;
double lat2 = latitude2;
double lon1 = longitude1;
double lon2 = longitude2;
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));
double valueResult= Radius*c;
double km=valueResult/1;
DecimalFormat newFormat = new DecimalFormat("####");
Integer kmInDec = Integer.valueOf(newFormat.format(km));
double meter=valueResult%1000;
Integer meterInDec= Integer.valueOf(newFormat.format(meter));
System.out.println("Radius Value "+valueResult+" KM "+kmInDec+" Meter "+meterInDec);
return Radius * c;
}
其中
latitude1
和longitude1
是起点的坐标,2是终点的坐标。您的图像没有显示在我们的终点。我已经编辑了帖子…请帮助我复制问题,但请尝试这个。[链接][1][1]:如何将当前位置和标记位置传递给函数???我仍然不明白…你从上面的答案中没有得到什么?我不明白函数如何得到我的当前位置和标记坐标…我应该如何将这些值传递给函数?我是android开发的新手,所以我不太了解..你实现了使用maps api的一部分吗??在手机上获取位置信息??请先实施这一点。哈弗森是最后一个要实施的公司。要做到这一点,谷歌需要做一些事情,并遵循官方文件