Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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 地图盒导航sdk使用地图上的所有点(坐标)逐点导航_Android_Dictionary_Navigation_Geojson_Mapbox Android - Fatal编程技术网

Android 地图盒导航sdk使用地图上的所有点(坐标)逐点导航

Android 地图盒导航sdk使用地图上的所有点(坐标)逐点导航,android,dictionary,navigation,geojson,mapbox-android,Android,Dictionary,Navigation,Geojson,Mapbox Android,我有一个GeoJSON数据,它给了我所有的点(坐标)。 使用这些点,我可以使用以下代码在地图上绘制多段线 mapboxMap.addPolyline(new PolylineOptions() .addAll(mapMatchedPoints) .color(Color.GREEN) .alpha(0.65f)

我有一个GeoJSON数据,它给了我所有的点(坐标)。 使用这些点,我可以使用以下代码在地图上绘制多段线

mapboxMap.addPolyline(new PolylineOptions()
                            .addAll(mapMatchedPoints)
                            .color(Color.GREEN)
                            .alpha(0.65f)
                            .width(4));
然后我想用这个来导航地图上的所有点

 NavigationRoute.Builder navigationRoute = NavigationRoute.builder()
            .accessToken(Mapbox.getAccessToken());

    navigationRoute.origin(origin);
    navigationRoute.destination(destination);
这里需要起点和终点。在下面的代码中,监听它的回调方法将给出路由

navigationRoute.build().getRoute(new Callback<DirectionsResponse>() {
        @Override
        public void onResponse(Call<DirectionsResponse> call, Response<DirectionsResponse> response) {
            if (response.body() == null) {
                Log.e(TAG, "No routes found, make sure you set the right user and access token.");
                return;
            }

            // Print some info about the route
            route = response.body().getRoutes().get(0);
            Log.d(TAG, "Distance: " + route.getDistance());

            // Draw the route on the map
            drawRoute(route, origin, destination);
        }

        @Override
        public void onFailure(Call<DirectionsResponse> call, Throwable t) {
            Log.e(TAG, "Error: " + t.getMessage());
        }
    });
navigationRoute.build().getRoute(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.body()==null){
Log.e(标记“未找到路由,请确保设置了正确的用户和访问令牌”);
返回;
}
//打印一些有关路线的信息
route=response.body().getRoutes().get(0);
Log.d(标记“Distance:+route.getDistance());
//在地图上画出路线
提取路线(路线、起点、终点);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.e(标记“Error:+t.getMessage());
}
});
drawroute是绘制导航路线的方法

private void drawRoute(DirectionsRoute route, Position origin, Position destination) {
    // Convert LineString coordinates into LatLng[]
    LineString lineString = LineString.fromPolyline(route.getGeometry(), Constants.PRECISION_6);
    List<Position> coordinates = lineString.getCoordinates();
    LatLng[] points = new LatLng[coordinates.size()];
    for (int i = 0; i < coordinates.size(); i++) {
        points[i] = new LatLng(
                coordinates.get(i).getLatitude(),
                coordinates.get(i).getLongitude());
    }

    // Draw Points on MapView
    mapboxMap.addPolyline(new PolylineOptions()
            .add(points)
            .color(Color.parseColor("#3887be"))
            .width(5));
    mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(origin.getLatitude(), origin.getLongitude()), 18));

    mapboxMap.addMarker(new MarkerOptions().position(new LatLng(origin.getLatitude(), origin.getLongitude())).setTitle("Origin"));
    mapboxMap.addMarker(new MarkerOptions().position(new LatLng(destination.getLatitude(), destination.getLongitude())).setTitle("Destination"));
}
private void drawRoute(方向路线、位置原点、位置终点){
//将线串坐标转换为LatLng[]
LineString LineString=LineString.fromPolyline(route.getGeometry(),Constants.PRECISION_6);
列表坐标=lineString.getCoordinates();
LatLng[]点=新的LatLng[coordinates.size()];
对于(int i=0;i
但它并没有贯穿所有要点

它只是从起点到终点绘制,避免了它们之间的中间点

如本截图所示,它仅显示从起点到终点

我希望它显示通过绿色标记多段线的路线,并在其中导航


我猜这是在计算点和绘制线之间的最短路径。

@所有帮助都会很感激您检索的方向取决于您设置的轮廓。但是,如果你想确保它通过一些特定的点,你需要在进行导航时将这些点添加为航路点。路线呼叫。谢谢@David Olsson,将尝试更新你这里有一些限制,iirc如果你想要交通,你只能设置约3个航路点(检查文档以确保)如果是“地图盒/驾驶”iirc,你可以设置为25。创建请求,然后循环并执行navigationrequest。addWaypoint(waypoint)但是如果超过25,如果我添加了超过25个应用程序正在崩溃,如果我添加了25个或更少,那么导航没有完成,我将如何处理它,请提出建议?@所有帮助都会很感激您检索的方向取决于您设置的配置文件。但是,如果你想确保它通过一些特定的点,你需要在进行导航时将这些点添加为航路点。路线呼叫。谢谢@David Olsson,将尝试更新你这里有一些限制,iirc如果你想要交通,你只能设置约3个航路点(检查文档以确保)如果是“地图盒/驾驶”iirc,你可以设置为25。创建请求,然后循环并执行navigationrequest.addWaypoint(waypoint)但是如果超过25,如果我添加了超过25个应用程序崩溃,如果我添加了25个或更少,那么导航没有完成,我将如何处理它,请建议?