需要删除最后一条折线并创建当前折线
need to remove last polyline and create current polyline
我用 google 方向绘制 google 地图 我使用 class http://www.akexorcist.com/2015/12/google-direction-library-for-android-en.html
有人为 google 方向建造。一切都很好,
折线显示在地图上。但是当我需要点击另一个方向,比如步行方向或行驶方向时,我在地图上看到了 2 条折线,我只想看到当前的折线。
这里我创建折线
并在开始时删除多段线,然后多段线根本不显示。
我不想要那个。我希望当我单击其他按钮时,多段线将被删除。
我试着把 polyline.remove();在按钮上单击 else 但问题是 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.when 我点击行走按钮 我希望公交折线将被移除
我们一直都在地图上只有一条折线。
我该怎么做?
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;
}
});
}
});
点击按钮后可以调用mMap.clear();
。
该方法将删除所有折线。
更新
您需要将折线保存到某个列表中,然后在单击按钮时将其删除
private List<Polyline> polylines;
将折线添加到列表中
polylines = new ArrayList<>();
for (PolylineOptions polylineOption : polylineOptionList) {
polyline = mMap.addPolyline(polylineOption);
polylines.add(polyline);
}
点击按钮后
for (Polyline polyline : polylines) {
polyline.remove();
}
对此更好的答案是您在清除或任何 button/View 单击时调用以下函数:
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();
}
}
我用 google 方向绘制 google 地图 我使用 class http://www.akexorcist.com/2015/12/google-direction-library-for-android-en.html 有人为 google 方向建造。一切都很好, 折线显示在地图上。但是当我需要点击另一个方向,比如步行方向或行驶方向时,我在地图上看到了 2 条折线,我只想看到当前的折线。
这里我创建折线 并在开始时删除多段线,然后多段线根本不显示。 我不想要那个。我希望当我单击其他按钮时,多段线将被删除。 我试着把 polyline.remove();在按钮上单击 else 但问题是 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.when 我点击行走按钮 我希望公交折线将被移除 我们一直都在地图上只有一条折线。 我该怎么做?
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;
}
});
}
});
点击按钮后可以调用mMap.clear();
。
该方法将删除所有折线。
更新
您需要将折线保存到某个列表中,然后在单击按钮时将其删除
private List<Polyline> polylines;
将折线添加到列表中
polylines = new ArrayList<>();
for (PolylineOptions polylineOption : polylineOptionList) {
polyline = mMap.addPolyline(polylineOption);
polylines.add(polyline);
}
点击按钮后
for (Polyline polyline : polylines) {
polyline.remove();
}
对此更好的答案是您在清除或任何 button/View 单击时调用以下函数:
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();
}
}