我希望使用Android的distanceTo()
方法来计算两种不同对象类型之间的距离。我正在使用LatLng
object
,因为它可以添加到Google Maps上的marker
位置。
LatLng clontarfFC = new LatLng(53.369615, -6.1859571);
mMap.addMarker(new MarkerOptions().position(clontarfFC).title("Clontarf FC").snippet("St.Annes Park, Clontarf"));
当我将位置对象类型添加到.position()中时,它会导致错误,因为它们不兼容。
我正在声明一个位置object
,这样它将代表应用程序用户的当前位置。
Location currentLocation = new Location ("Curent Location");
currentLocation.setLatitude(53.3419322);
currentLocation.setLongitude(-6.2670159);
我正在尝试找到两者之间的距离:
final float distance = clontarfFC.distanceTo(currentLocation)/1000;
final String formattedDistance = String.format("%.02f", distance);
据我所知,没有内置的方法,但是您可以创建一个简单但彻底的转换器(例如,latlng是您的latlng对象):
Location location = new Location("location_name");
location.setLatitude(latLng .latitude);
location.setLongitude(latLng .longitude);
location.setTime(new Date().getTime());
转换回latlng使用以下内容:
LatLng newLatLng = new LatLng(location.getLatitude(),
location.getLongitude());
在您的gradle文件中添加以下依赖项和
compile 'com.google.maps.android:android-maps-utils:0.4+'
实现以下代码行,并传递" start latlng"one_answers" end latlng",以获取两个对象之间的距离
double distanceBetween = SphericalUtil.computeDistanceBetween(
beginLatLng, endLatLng);
如所说的fuzzkity,您可以做LatLng position = new LatLng(loc.getLatitude(), loc.getLongitude());
您可以做类似的事情
float[] results = new float[3];
Location.distanceBetween(coordStart.latitude, coordStart.longitude, position.latitude, position.longitude, results);
double dist = results[0];