Я рисовал полигоны на карте всякий раз, когда пользователь перетаскивал карту Google.Теперь я хочу сбросить карту одним нажатием кнопки и мне нужно удалить все полигоны, которые есть у объекта карты.Я написал код для удаления, но не работает.Как вы можете видеть, я составлял список полигонов по polygonList.add(polygon);
, и по щелчку btn_reset_map
я удалил все элементы, а также очистил карту, но когда я снова перетаскиваю карту, снова появляются все предыдущие полигоны, и это моя проблема.,Пожалуйста, расскажите, как удалить все полигоны навсегда, нажав btn_reset_map
.
Макет карты:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
<FrameLayout
android:id="@+id/fram_map"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/btn_draw_State"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Free Draw" />
<Button
android:id="@+id/btn_reset_map"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset" />
</FrameLayout>
</FrameLayout>
Код:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
FrameLayout fram_map = (FrameLayout) findViewById(R.id.fram_map);
Button btn_draw_State = (Button) findViewById(R.id.btn_draw_State);
Button btnReset = (Button) findViewById(R.id.btn_reset_map);
btn_draw_State.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Is_MAP_Moveable = !Is_MAP_Moveable;
}
});
btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mMarkerPoints!=null) {
mMarkerPoints.clear();
for(int i = 0; i<polygonList.size(); i++) {
polygonList.remove(i);
}
polygonList.clear();
mMap.clear();
}
}
});
fram_map.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
Double latitude, longitude;
int x_co = Math.round(x);
int y_co = Math.round(y);
Projection projection = mMap.getProjection();
Point x_y_points = new Point(x_co, y_co);
LatLng latLng = mMap.getProjection().fromScreenLocation(x_y_points);
latitude = latLng.latitude;
longitude = latLng.longitude;
Log.d("latlong_", latitude+", "+longitude);
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
Log.d("latlong_", "down "+latitude+", "+longitude);
// finger touches the screen
mMarkerPoints.add(new LatLng(latitude, longitude));
case MotionEvent.ACTION_MOVE:
// finger moves on the screen
Log.d("latlong_", "move "+latitude+", "+longitude);
mMarkerPoints.add(new LatLng(latitude, longitude));
break;
case MotionEvent.ACTION_UP:
PolygonOptions rectOptions = new PolygonOptions();
rectOptions.addAll(mMarkerPoints);
rectOptions.strokeColor(Color.RED);
rectOptions.strokeWidth(5);
rectOptions.fillColor(Color.parseColor("#40c4c4c4"));
Polygon polygon = mMap.addPolygon(rectOptions);
polygonList.add(polygon);
break;
}
return Is_MAP_Moveable;
}
});