Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android在谷歌地图上查找两点之间的距离和持续时间_Android_Google Maps - Fatal编程技术网

android在谷歌地图上查找两点之间的距离和持续时间

android在谷歌地图上查找两点之间的距离和持续时间,android,google-maps,Android,Google Maps,我跟着图坦卡蒙来到这里 一切似乎都在运行,只有2个错误,我得到和每个人谁遵循图坦卡蒙 地图活动第一 private List<LatLng> getDirectionPolylines(List<RouteObject> routes){ List<LatLng> directionList = new ArrayList<LatLng>(); for(RouteObject route : routes){

我跟着图坦卡蒙来到这里

一切似乎都在运行,只有2个错误,我得到和每个人谁遵循图坦卡蒙

地图活动第一

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(); HERE
                String routeDuration = leg.getDuration().getText(); HERE
                setRouteDistanceAndDuration(routeDistance, routeDuration); // here we will send the route Duration and distent
                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;
    } 
第二个错误在LegsObject类中

import java.util.List;


public class LegsObject {
    private List<StepsObject> steps;

    private DistanceObject distance;

    private DurationObject duration;

    public LegsObject(DurationObject duration, DistanceObject distance, List<StepsObject> steps) {
        this.duration = duration;
        this.distance = distance;
        this.steps = steps;
    }

    public List<StepsObject> getSteps() {
        return steps;
    }

    public DistanceObject getDistance() {
        return distance;
    }

    public DurationObject getDuration() {
        return duration;
    }
}

我相信如果LegsObject.class中的第二个错误被修复,那么第一个错误也将被修复

没有实现:

1) 距离对象类

public class DistanceObject{


    private Integer value;
    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }
}
2) DurationObject类

public class DistanceObject{


    private Integer value;
    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }
}
课程持续时间相同

public class DurationObject {

    private String text;

    private Integer value;


    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }
}
Integer duration=routeA.getLegs().get(0).getDuration().getValue();
获得距离

Integer disInMeters=routeA.getLegs().get(0).getDistance().getValue();
int  kilometers = (int) (disInMeters * 0.001); //convert in KM
获取持续时间

public class DurationObject {

    private String text;

    private Integer value;


    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }
}
Integer duration=routeA.getLegs().get(0).getDuration().getValue();

有关更多帮助,请参见

,您可以为此使用第三方库。它简单高效:

梯度依赖性:

compile 'com.akexorcist:googledirectionlibrary:1.0.4' // Custom Google Direction API \\
代码:

下面的方法将获取目的地的latLng,同样在方法内部,您应该有包含原点的latLng对象。服务器密钥是您的api密钥,您还应该启用GoogleDirections api来实现这一点

/**
     * Draw polyline on map, get distance and duration of the route
     *
     * @param latLngDestination LatLng of the destination
     */
    private void getDestinationInfo(LatLng latLngDestination) {
        progressDialog();
        String serverKey = getResources().getString(R.string.google_direction_api_key); // Api Key For Google Direction API \\
        final LatLng origin = new LatLng(latitude, longitude);
        final LatLng destination = latLngDestination;
        //-------------Using AK Exorcist Google Direction Library---------------\\
        GoogleDirection.withServerKey(serverKey)
                .from(origin)
                .to(destination)
                .transportMode(TransportMode.DRIVING)
                .execute(new DirectionCallback() {
                    @Override
                    public void onDirectionSuccess(Direction direction, String rawBody) {
                        dismissDialog();
                        String status = direction.getStatus();
                        if (status.equals(RequestResult.OK)) {
                            Route route = direction.getRouteList().get(0);
                            Leg leg = route.getLegList().get(0);
                            Info distanceInfo = leg.getDistance();
                            Info durationInfo = leg.getDuration();
                            String distance = distanceInfo.getText();
                            String duration = durationInfo.getText();

                            //------------Displaying Distance and Time-----------------\\
                            showingDistanceTime(distance, duration); // Showing distance and time to the user in the UI \\
//                            String message = "Total Distance is " + distance + " and Estimated Time is " + duration;
//                            StaticMethods.customSnackBar(consumerHomeActivity.parentLayout, message,
//                                    getResources().getColor(R.color.colorPrimary),
//                                    getResources().getColor(R.color.colorWhite), 3000);

                            //--------------Drawing Path-----------------\\
                            ArrayList<LatLng> directionPositionList = leg.getDirectionPoint();
                            PolylineOptions polylineOptions = DirectionConverter.createPolyline(getActivity(),
                                    directionPositionList, 5, getResources().getColor(R.color.colorPrimary));
                            googleMap.addPolyline(polylineOptions);
                            //--------------------------------------------\\

                            //-----------Zooming the map according to marker bounds-------------\\
                            LatLngBounds.Builder builder = new LatLngBounds.Builder();
                            builder.include(origin);
                            builder.include(destination);
                            LatLngBounds bounds = builder.build();

                            int width = getResources().getDisplayMetrics().widthPixels;
                            int height = getResources().getDisplayMetrics().heightPixels;
                            int padding = (int) (width * 0.20); // offset from edges of the map 10% of screen

                            CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
                            googleMap.animateCamera(cu);
                            //------------------------------------------------------------------\\

                        } else if (status.equals(RequestResult.NOT_FOUND)) {
                            Toast.makeText(context, "No routes exist", Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onDirectionFailure(Throwable t) {
                        // Do something here
                    }
                });
        //-------------------------------------------------------------------------------\\

    }
/**
*在地图上绘制多段线,获取路线的距离和持续时间
*
*@param LatLng目的地的目的地LatLng
*/
私有void getDestinationInfo(LatLng latLngDestination){
progressDialog();
String serverKey=getResources().getString(R.String.google_direction_api_key);//google direction api的api键\\
最终车床原点=新车床(纬度、经度);
最终latLngDestination=latLngDestination;
//-------------使用AK驱魔谷歌方向库---------------\\
GoogleDirection.withServerKey(serverKey)
.来自(原产地)
.至(目的地)
.运输模式(运输模式.驾驶)
.execute(新建DirectionCallback(){
@凌驾
public void onDirectionSuccess(方向、字符串主体){
dismissDialog();
字符串状态=direction.getStatus();
if(status.equals(RequestResult.OK)){
路由=direction.getRouteList().get(0);
Leg Leg=route.getLegList().get(0);
Info distance Info=leg.getDistance();
Info-durationInfo=leg.getDuration();
字符串距离=distanceInfo.getText();
字符串持续时间=durationInfo.getText();
//------------显示距离和时间-----------------\\
showingDistanceTime(距离、持续时间);//在UI中向用户显示距离和时间\\
//String message=“总距离为“+距离+”,预计时间为“+持续时间;
//StaticMethods.customSnackBar(consumerHomeActivity.parentLayout,消息,
//getResources().getColor(R.color.colorPrimary),
//getResources().getColor(R.color.colorWhite),3000);
//--------------绘图路径-----------------\\
ArrayList directionPositionList=leg.getDirectionPoint();
PolylineOptions PolylineOptions=DirectionConverter.createPolyline(getActivity(),
directionPositionList,5,getResources().getColor(R.color.colorPrimary));
添加多段线(多段线选项);
//--------------------------------------------\\
//-----------根据标记边界缩放地图-------------\\
LatLngBounds.Builder=新的LatLngBounds.Builder();
建造商。包括(原产地);
建造商。包括(目的地);
LatLngBounds bounds=builder.build();
int width=getResources().getDisplayMetrics().widthPixels;
int height=getResources().getDisplayMetrics().heightPixels;
int padding=(int)(宽度*0.20);//从地图边缘偏移屏幕的10%
CameraUpdate cu=CameraUpdateFactory.newLatLngBounds(边界、宽度、高度、填充);
谷歌地图。动画美人鱼(cu);
//------------------------------------------------------------------\\
}else if(status.equals(RequestResult.NOT_FOUND)){
Toast.makeText(上下文,“不存在路由”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
公共方向失效(可丢弃t){
//在这里做点什么
}
});
//-------------------------------------------------------------------------------\\
}

您的DistanceObject类丢失了它看起来非常感谢,您救了我一天请尝试并告诉我!毕竟我发现你的ans容易多了,而且工作很好谢谢兄弟。。如果你接受我的回答,那就太好了。。。它将帮助其他人。。。如果你喜欢的话也可以投票…当然可以,你能看看我的其他问题吗?也许你可以提前帮我谢谢