2010-06-01 48 views
19

Trong API Google Maps phiên bản 2, tôi đã sử dụng map.clearOverlays() để xóa điểm đánh dấu và vẽ lại.API Google Maps v3 - Cách xóa lớp phủ?

Tôi làm cách nào để sử dụng API Google Maps v3?

Cảm ơn

+0

có thể trùng lặp với [API Google Maps v3: Cách xóa tất cả điểm đánh dấu?] (Http: // stackoverflow.com/questions/1544739/google-maps-api-v3-cách-để-xóa-tất cả các điểm đánh dấu) – Praveen

+0

Thực tế vì đó là bài đăng được liên kết với câu trả lời được chấp nhận. – Natim

Trả lời

11

Xem here biết chi tiết về các tùy chọn khác nhau dành cho bạn, nhưng bây giờ bạn phải lặp qua các dấu hiệu và loại bỏ chúng riêng rẽ. code của bạn nên tìm một cái gì đó như thế này:

var markers = []; 

function clearOverlays() { 
while(markers.length) { markers.pop().setMap(null); } 
    markers.length = 0; 
} 

markers.push(marker); 
google.maps.event.addListener(marker,"click",function(){}); 
+0

Câu trả lời này đã bị gắn cờ để xóa vì đó là câu trả lời chỉ liên kết. Bạn có thể vui lòng mở rộng câu trả lời này để câu trả lời cho câu hỏi mà không yêu cầu người đọc nhấp vào trang web được liên kết không? – josliber

32

Đây là tốt nhất:

http://apitricks.blogspot.com/2010/02/clearoverlays-in-v3.html

Điều trong trường hợp liên kết chết:

clearOverlays() in V3

Không có clearOverlays () trong API v3. Một số thực hành đã được trình bày. Tôi nghĩ rằng đây là đơn giản nhất cho đến nay.

Đẩy tất cả các lớp phủ trong một mảng khi được tạo (như thường lệ). Mã sau sẽ xóa cả bản đồ và mảng:

phương thức pop() loại bỏ phần tử cuối cùng của mảng và trả về phần tử đó. 'while' giữ điều đó xảy ra miễn là có các phần tử trong mảng. Khi lớp phủ [0] không tồn tại nữa, nhiệm vụ được hoàn thành và mã sẽ tiếp tục.

+0

GIẢI PHÁP RẤT TỐT! tôi đã có vấn đề thực hiện chức năng của bạn cho đến khi tôi lưu popline() èd polyline vào một đối tượng tạm thời đầu tiên: \t var arrayTemp = overlayArrayPolylineUpload.pop(); arrayTemp.setMap (null); –

1

Bạn có thể có một cái nhìn tại các tài liệu Google Maps vì nó hiển thị deleteOverLays đơn giản phương pháp http://code.google.com/apis/maps/documentation/javascript/overlays.html

// Deletes all markers in the array by removing references to them 
function deleteOverlays() { 
    if (markersArray) { 
    for (i in markersArray) { 
     markersArray[i].setMap(null); 
    } 
    markersArray.length = 0; 
    } 
} 
+0

xóa khỏi bản đồ là HIDING, chứ không phải DELETING. các điểm đánh dấu vẫn tồn tại, nhưng bạn đã loại bỏ mảng giữ chúng. bạn phải setMap (null) sau đó thiết lập các điểm đánh dấu chính nó là null. http://code.google.com/apis/maps/documentation/javascript/overlays.html#RemovingOverlays –

0

tôi tìm thấy một giải pháp khác và nó hoạt động rất tốt nó sẽ loại bỏ tất cả các lớp phủ đang tồn tại trên bản đồ

gmap.overlayMapTypes.setAt(0, null); 

khi GMap là đối tượng bản đồ của bạn

+0

không hoạt động đối với tôi – malhal

1

Làm thế nào về điều này? Tôi không muốn sử dụng .setMap (null), bởi vì tôi không biết cách tốt hơn để bắt đầu lại polyShape.

polyShape = new google.maps.Polygon(
    { 
     strokeColor  : '#000000', 
     strokeOpacity : 0.3, 
     strokeWeight : 1, 
     fillColor  : "#000000", 
     fillOpacity  : 0.26, 
     geodesic  : true 
    }); 

Sau đó .. lặp lại qua đường dẫn để xóa nó.

var path = new google.maps.MVCArray; 

/** 
* Delete all points inside Map 
*/ 
function clearMap() 
{ 
    //clear markers 
    for (var i = 0; i < markers.length; i++) 
    { 
     markers[i].setMap(null); 

    } 
    markers = []; 

    //clear polygon, still finding more elegant way 
    while (polyShape.getPath().length) 
    { 
     path.removeAt(0); 
    } 
} 
Các vấn đề liên quan