是否可以将LATLNG对象类型解析为位置



我希望使用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];

相关内容

最新更新