1

现在我正在开发移动应用程序,它以特定间隔获取 gps 位置,将位置数据发送到服务器。服务器根据这些信息绘制谷歌路线图。

请帮我解决以下场景

有时,在对面路线上标记的 gps 坐标实际上已经行进,并使路线完全错误。

例如我在这样的路线上旅行(在谷歌地图上)

在此处输入图像描述

但我得到地图(在谷歌地图上)

在此处输入图像描述

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 回答