Xóa các điểm đánh dấu khỏi Google Map trong Android


83

Tôi đã thêm bản đồ về hoạt động phân mảnh và thêm một số điểm đánh dấu bằng chức năng addMarker, nhưng tôi có thể xóa tất cả các điểm đánh dấu, tôi nhận được thông báo về danh sách các điểm đánh dấu khác nhau,

Bây giờ tôi muốn xóa tất cả các điểm đánh dấu và thêm một điểm mới.

một cách để giữ tất cả các điểm đánh dấu trong danh sách và xóa từng điểm một, (marker.remove ())

Có cách nào tốt hơn để xóa tất cả các điểm đánh dấu.


2
có phương pháp rõ ràng ()
Marko Niciforovic

Câu trả lời:


203

Nếu bạn muốn xóa "tất cả các điểm đánh dấu, lớp phủ và đường đa tuyến khỏi bản đồ", hãy sử dụng clear()trên của bạnGoogleMap .


1
Tôi có nên gọi remove () trên tất cả chúng trước khi thực hiện điều đó không? Ý tôi là, nếu tôi vẫn có Danh sách ArrayList với những Điểm đánh dấu đó, tôi cho rằng tôi vẫn đang có một tham chiếu tích cực đến những Điểm đánh dấu đó, vì vậy chúng sẽ vẫn còn trong bộ nhớ ngay cả khi tôi xóa bản đồ. Tôi nói đúng về điều này hay việc xóa bản đồ sẽ xóa sạch các tham chiếu đến Điểm đánh dấu?
Charlie-Blake

5
@ santirivera92: "Tôi có nên gọi remove () trên tất cả chúng trước khi làm điều đó không?" - AFAIK, bạn không cần phải làm vậy. "nếu tôi vẫn có Danh sách ArrayList với các Điểm đánh dấu đó, tôi cho rằng tôi vẫn đang có tham chiếu hoạt động đến các Điểm đánh dấu đó, vì vậy chúng sẽ vẫn còn trên bộ nhớ ngay cả khi tôi xóa bản đồ" - vâng, nhưng đó là mã của bạn , không phải của Google . Nếu bạn giữ Markercác đối tượng riêng biệt với bản đồ, bạn cần phải buông chúng ra. clear()sẽ loại bỏ chúng một cách trực quan .
CommonsWare

1
@ santirivera92: Đúng vậy. Không có gì khác nên giữ họ.
CommonsWare

8
Cũng lưu ý rằng clear()chức năng sẽ không đặt lại các MarkerID. Về cơ bản, bạn sẽ không nhận được m0lại cho Markerthêm mới .
Prasad De Zoysa

2
@Prasad Có cách nào lấy lại m0 không?
Gokhan Arik

4

Nếu bạn không muốn xóa các đường polyline và chỉ xóa các điểm đánh dấu, hãy làm theo các bước bên dưới.

Đầu tiên hãy tạo một Mảng đánh dấu mới như bên dưới

List<Marker> AllMarkers = new ArrayList<Marker>();

Sau đó, khi bạn thêm điểm đánh dấu trên bản đồ google cũng thêm chúng vào Mảng điểm đánh dấu (AllMarkers của nó trong ví dụ này)

for(int i=0;i<places.length();i++){

                LatLng location = new LatLng(Lat,Long);
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(location);
                markerOptions.title("Your title");

                 Marker mLocationMarker = Map.addMarker(markerOptions); // add the marker to Map
                    AllMarkers.add(mLocationMarker); // add the marker to array

                }

rồi cuối cùng gọi phương thức dưới đây để xóa tất cả các điểm đánh dấu cùng một lúc

 private void removeAllMarkers() {
        for (Marker mLocationMarker: AllMarkers) {
            mLocationMarker.remove();
        }
        AllMarkers.clear();

    }

gọi từ mọi nơi để xóa tất cả các điểm đánh dấu

removeAllMarkers();

Tôi đã tìm thấy giải pháp này khi tôi đang tìm cách chỉ xóa các điểm đánh dấu trên bản đồ mà không xóa các đường đa tuyến. Hy vọng điều này cũng sẽ giúp bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.