Как удалить полигоны с Google Map - PullRequest
0 голосов
/ 09 октября 2018

Я рисовал полигоны на карте всякий раз, когда пользователь перетаскивал карту 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;

        }
        });

1 Ответ

0 голосов
/ 09 октября 2018

возможно, ваша проблема в функции remove().вызываемое вами удаление происходит из arrayList, и вы должны вызывать remove () из полигонального объекта следующим образом:

for(Polygone poly : polygonList){
   poly.remove();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...