需要删除最后一条折线并创建当前折线

问题描述 投票:2回答:2

我用google方向google地图我使用有人为google方向构建的类http://www.akexorcist.com/2015/12/google-direction-library-for-android-en.html。一切都很好,折线显示在地图上。但是当我需要点击另一个方向,如行走方向或行驶方向时,我在地图上看到2折线,我想只看到当前的折线。

在这里我创建折线并在开始时删除折线,然后根本不显示折线。我不想要那个。我想当我点击其他按钮时,折线将删除。我试着把,polyline.remove();按钮单击其他但问题,如果,polyline.remove();在括号外,polyline.remove();不要删除折线。我需要调用polyline.remove();当我点击其他按钮但我卡住了。这是代码:

    switch (direction.getStatus()) {
        case RequestResult.OK:
            Route route = direction.getRouteList().get(0);

            Leg leg = route.getLegList().get(0);

            ArrayList<LatLng> pointList = leg.getDirectionPoint();

            List<Step> stepList = direction.getRouteList().get(0).getLegList().get(0).getStepList();
            ArrayList<PolylineOptions> polylineOptionList = DirectionConverter.createTransitPolyline(this, stepList, 5, Color.RED, 3, Color.BLUE);
            for (PolylineOptions polylineOption : polylineOptionList) {
                polyline = mMap.addPolyline(polylineOption);
                polyline.remove();

            }

                break;

2.当我点击行走按钮时,我希望过境折线将删除我们一直只有的地图,地图中只有一条折线。我是怎么做到的?

   bWalking.setOnClickListener(new View.OnClickListener() {
                                        @Override
                                        public void onClick(View v) {
                                            if (locationGpsLatLng == null) {
                                                Toast.makeText(MapsActivity.this, "Need GPS location", `enter code here`Toast.LENGTH_SHORT).show();{
                                                    return;
                                                }
                                            }
                                            if (markerLocation == null) {
                                                Toast.makeText(MapsActivity.this, "Type on marker bathroom for destination", Toast.LENGTH_SHORT).show();
                                            } else {
                                            sendRequestWalkingDirection();


                                        }
                                    };
                                    private void sendRequestWalkingDirection() {
                                        GoogleDirection.withServerKey(APIKEY)
                                                .from(locationGpsLatLng)
                                                .to(markerLocation)
                                                .transportMode(TransportMode.WALKING)
                                                .execute(new DirectionCallback() {
                                                    @Override
                                                    public void onDirectionSuccess(Direction direction, String rawBody) {
                                                        Log.d("onDirectionSuccess", "status: " + direction.getStatus());
                                                        requestOk(direction, rawBody);
                                                        mMap.addMarker(new MarkerOptions().position(locationGpsLatLng).draggable(false).icon(BitmapDescriptorFactory
                                                                .defaultMarker(BitmapDescriptorFactory.HUE_RED)));
                                                        CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(locationGpsLatLng, 15);
                                                        mMap.animateCamera(cameraUpdate);
                                                    }
                                                    @Override
                                                    public void onDirectionFailure(Throwable t) {
                                                        return;
                                                    }
                                                });
                                    }
   });
android google-maps directions google-polyline
2个回答
1
投票

单击按钮后可以调用mMap.clear();。该方法将删除所有折线。

GoogleMap class documentation

UPDATE

您需要将折线保存到某个列表,然后在单击按钮时将其删除

private List<Polyline> polylines;

将折线添加到列表中

polylines = new ArrayList<>();
for (PolylineOptions polylineOption : polylineOptionList) {
    polyline = mMap.addPolyline(polylineOption);
    polylines.add(polyline);
}

点击按钮后

for (Polyline polyline : polylines) {
    polyline.remove();
}

0
投票

更好的答案是你在清除或任何按钮上调用以下功能/查看点击:

public onClick(View v){
if(googleMap!=null && polygon!=null && polyline!=null && polylineOptions!=null && 
                polygonOptions!=null){
            polylineOptions.getPoints().clear();
            polygonOptions.getPoints().clear();
            googleMap.clear();
            polyline.remove();
            polygon.remove();
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.