1

現在、特定の間隔でGPSの位置を取得し、位置データをサーバーに送信するモバイルアプリケーションに取り組んでいます。サーバーは、この情報に基づいて Google ルート マップを描画します。

次のシナリオを解決するのを手伝ってください

ときどき反対ルートに記された GPS 座標が実際に移動し、ルートを完全にエラーにすることがあります。

例えばこんなルートで移動しました(グーグルマップ上)

ここに画像の説明を入力

しかし、私は(Googleマップで)のような地図を取得します

ここに画像の説明を入力

ポイントBを取得/平行道路上にマーク

どうすればこの問題を解決できますか?

4

1 に答える 1

0

ルート ドロウのアレクサンダー ライブラリを試す

「com.github.jd-alexander:library:1.1.0」をコンパイルします

例:

private void startRouting() {

        
        LatLng  origin = new LatLng(18.01455, -77.499333);
        LatLng destination = new LatLng(18.0145600, -77.491333);
        Routing routing = new Routing.Builder()
                .travelMode(Routing.TravelMode.DRIVING)
                .alternativeRoutes(false)
                .withListener(new RoutingListener() {
                    @Override
                    public void onRoutingFailure(RouteException e) {
                        Log.e("onRoutingFailure: ", e.getMessage());
                    }

                    @Override
                    public void onRoutingStart() {

                    }

                    @Override
                    public void onRoutingSuccess(ArrayList<Route> routes, int shortestRouteIndex) {
                        if (routes != null && routes.size() > 0) {
                            for (Route route : routes) {
                                List<LatLng> latlngs = route.getPoints();
                                try {

                                    Random rnd = new Random();
                                    int color = Color.argb(200, rnd.nextInt(256), rnd.nextInt(256), 0);
/*                                    int color1 = Color.argb(225, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
                                    int color2 = Color.argb(225, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
                                    int color3 = Color.argb(225, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));*/
                                    mMap.addPolyline(new PolylineOptions().addAll(latlngs).color(color).width(12.0f));

                                } catch (Exception e) {
                                    e.printStackTrace();
                                    Log.e("onRoutingSuccess: ", e.getMessage());
                                    Toast.makeText(MainActivity.this, "An internal error occurred!", Toast.LENGTH_SHORT).show();
                                }
                            }
                            //showBottomSheet(routes.get(shortestRouteIndex));
                        }
                    }

                    @Override
                    public void onRoutingCancelled() {
                        Log.e("onRoutingCancelled: ", "Routing cancelled");
                    }
                })
                .waypoints(origin, destination)
                .build();
        routing.execute();


    }

于 2018-01-24T12:49:05.607 に答える