need to remove last polyline and create current polyline

不羁的心 提交于 2019-12-13 16:48:07

问题


i do google map with google direction i use class http://www.akexorcist.com/2015/12/google-direction-library-for-android-en.html that someone build for google direction. everything is work good, and the polyline show on the map. but when i need to click another direction like walking direction or drive direction i see 2 polyline on the map and i want to see only the current polyline.

here i create the polyline and remove the polyline in the start, then the polyline not show at all. i dont want that. i want when i click else button the polyline will remove. i try to put, polyline.remove(); on button click else but the problem that if, polyline.remove(); outside the parentheses, polyline.remove(); dont remove the polyline. i need to call polyline.remove(); when i click other button but i stuck. here is the code:

    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.when i click in walking button i want the transit polyline will remove that we have just all the time, only one polyline in the map. how i do that?

   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;
                                                    }
                                                });
                                    }
   });

回答1:


You can call mMap.clear(); after the button click. That method will remove all the polylines.

GoogleMap class documentation

UPDATE

You need to save the polylines to some list and then remove them when the button is clicked

private List<Polyline> polylines;

Add the polylines to the list

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

After button click

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



回答2:


the better answer to this is you call following function on clear or whatever button/View click :

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();
        }
}


来源:https://stackoverflow.com/questions/37719687/need-to-remove-last-polyline-and-create-current-polyline

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!