2016-06-09 18 views
2

我做谷歌地图与谷歌方向我使用类别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; 
                } 
               }); 
            } 
    }); 

回答

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

mMap.clear();清除所有地图包括我所有的标记其对我不好 –

+0

我已更新我的回答 – Wilik

+0

其工作非常感谢。你很棒!! –