如何计算android中两个标记点之间的距离

时间:2017-01-24 20:44:58

标签: android google-maps

我正在创建一个Android应用程序,它显示地图中两个标记点的距离和持续时间。在onCreate()中,我编写了以下代码:

在MapsActivity.java中

   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;
    }

我不清楚如何计算距离&amp;持续时间在&#39; getText&#39;在上面的代码中。我无法看到一些像Distancebetween()这样使用LtnLtg作为参考的API。 请建议如何计算距离和持续时间值。

2 个答案:

答案 0 :(得分:0)

你应该得到那些标记的LatLng(你可以使用

来做到这一点)
marker.getPosition().getLatitude() 

marker.getPosition().getLongitude()

找出这两个LatLng之间的距离。有几种方法可以做到这一点。你可以用

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);

答案 1 :(得分:0)

var lat = marker.getPosition().lat();
var lng = marker.getPosition().lng();