在 Google Maps v2 上计算当前位置和标记之间的距离
Posted
技术标签:
【中文标题】在 Google Maps v2 上计算当前位置和标记之间的距离【英文标题】:Calculate Distance between Current Location and Marker on Google Maps v2 【发布时间】:2015-05-03 15:54:48 【问题描述】:我是新来的...请帮助我
我想开发一个计算用户当前位置和标记之间距离的安卓应用程序。当用户触摸制造商时,它将计算距离。我想使用 Haversine 公式,但我不知道如何将当前位置和标记坐标输入到公式中...例如 StartP 将是我当前的位置坐标,而 EndP 将是我的标记坐标。
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;
【问题讨论】:
您的图片没有显示在我们的最后。 我已经编辑了帖子...请帮助我 【参考方案1】:公式接受的参数类型为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]:developer.android.com/reference/android/location/… 如何将当前位置和标记位置传递给函数???我还是不明白... 你从上面的回答中没有得到什么? 我不明白该函数将如何获取我当前的位置和标记坐标。我应该如何将这些值传递给函数?我是android开发的新手,所以我不太明白.. 你实现了使用maps api的一部分吗?手机定位??请先实施。 Haversine 排在最后执行。为此,谷歌需要做一些事情并遵循官方文档以上是关于在 Google Maps v2 上计算当前位置和标记之间的距离的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google Maps v2 上将标记添加到当前位置?
将相机重定向到当前位置 Google Maps API v2
Android Google Maps V2 当前位置 纬度 经度 NullPointerException