如何计算android中两个标记点之间的距离
我正在创建一个android应用程序,显示地图上两个标记点的距离和持续时间。在onCreate()中,我编写了以下代码: 在MapsActivity.java中如何计算android中两个标记点之间的距离,android,google-maps,Android,Google Maps,我正在创建一个android应用程序,显示地图上两个标记点的距离和持续时间。在onCreate()中,我编写了以下代码: 在MapsActivity.java中 private List<LatLng> getDirectionPolylines(List<RouteObject> routes){ List<LatLng> directionList = new ArrayList<LatLng>(); fo
private List<LatLng> getDirectionPolylines(List<RouteObject> routes){
List<LatLng> directionList = new ArrayList<LatLng>();
for(RouteObject route : routes){
List<LegsObject> legs = route.getLegs();
for(LegsObject leg : legs){
String routeDistance = leg.getDistance().getText();
String routeDuration = leg.getDuration().getText();
setRouteDistanceAndDuration(routeDistance, routeDuration);
List<StepsObject> steps = leg.getSteps();
for(StepsObject step : steps){
PolylineObject polyline = step.getPolyline();
String points = polyline.getPoints();
List<LatLng> singlePolyline = decodePoly(points);
for (LatLng direction : singlePolyline){
directionList.add(direction);
}
}
}
}
return directionList;
}
专用列表getDirectionPolylines(列表管线){
List directionList=新建ArrayList();
用于(路由对象路由:路由){
List legs=route.getLegs();
用于(LegsObject腿:腿){
字符串routedInstance=leg.getDistance().getText();
字符串routeDuration=leg.getDuration().getText();
设置RouteInstance和Duration(RouteInstance,routeDuration);
List steps=leg.getSteps();
用于(步骤对象步骤:步骤){
PolylineObject polyline=step.getPolyline();
字符串点=polyline.getPoints();
列出单多段线=解码多段线(点);
用于(板条方向:单多段线){
方向列表。添加(方向);
}
}
}
}
返回方向列表;
}
我不清楚如何在上面代码中的“getText”中计算距离和持续时间。我看不到一些API,比如Distancebetween(),它使用LtnLtg作为引用。
请建议如何计算距离和持续时间值。您应该获得这些标记的LatLngs(您可以使用
marker.getPosition().getLatitude()
及
找出这两个板条之间的距离。有几种方法。你可以使用
Location.distanceBetween(
startLatitude,
startLongitude,
endLatitude,
endLongitude,
results);
或
但是你有一个LatLng对象的列表,在代码的下面几行…是的,如何使用它来获得这两点?我的问题是如何从标记中获得这些纬度。我知道我可以使用这些API。
Location.distanceBetween(
startLatitude,
startLongitude,
endLatitude,
endLongitude,
results);
Location loc1 = new Location("");
loc1.setLatitude(lat1);
loc1.setLongitude(lon1);
Location loc2 = new Location("");
loc2.setLatitude(lat2);
loc2.setLongitude(lon2);
float distanceInMeters = loc1.distanceTo(loc2);
var lat = marker.getPosition().lat();
var lng = marker.getPosition().lng();