15

Nền nhỏ. Tôi có thiết lập điều hướng khi bạn nhấp vào một mục điều hướng nhất định, nó sẽ tạo ra markers trên bản đồ. Nếu bạn nhấp vào một mục điều hướng khác, mục này sẽ xóa markers trước đó và thiết lập mục mới.API Google Maps v3 xóa tất cả các đường polycarbonate

Bây giờ tôi đang làm việc với polylines và cố gắng tạo cùng một khái niệm ở đây với polylines, tuy nhiên tôi đang gặp khó khăn. Dưới đây là những gì tôi có:

// Global variable for array of lines 
    var points= []; 

Thiết lập điểm của tôi.

line1 = new google.maps.LatLng(line1Start, line1Finish); 
    line2 = new google.maps.LatLng(line2Start, line2Finish); 
    line3 = new google.maps.LatLng(line3Start,line3Finish); 

    points.push(line1, line2, line3); 

Thiết lập đường polycarbonate của tôi.

var polyline = new google.maps.Polyline({ 
     path:points, 
     strokeColor:"#FF0000", 
     strokeOpacity:1.0, 
     strokeWeight:2 
    }); 

Bắt đầu bản đồ bằng các dòng.

polyline.setMap(map); 

Tất cả đều hoạt động tốt. Các dòng được tạo và hiển thị giữa các điểm đánh dấu của tôi. Bây giờ, hãy xóa chúng (hoặc không ...)

function removeLines() { 
     if (points) { 
      points.length = 0; 
     } 
     points = []; 
    } 

removeLines() đang được gọi ở đầu hàm để xóa chúng, sau đó mới được thiết lập. Điều này thực sự xóa điểm của tôi trong mảng điểm, tuy nhiên trên bản đồ chính nó polylines vẫn hiển thị và không biến mất như các điểm đánh dấu của tôi.

Điều gì cho ?!

Trả lời

30

Bạn phải làm polyline.setMap(null), thao tác này sẽ xóa đường khỏi bản đồ. Documentation.

+2

Wow .. Tôi đã làm điều này trước đây, tuy nhiên tôi đang làm một vòng lặp trên mảng điểm và làm các điểm [i] .setMap (null); Rõ ràng điều này cần phải được trên polyline và không phải là mảng điểm ... DUH. 1 cảm ơn vì đã giúp tôi nhận ra điều đó :) – Romes

12

polyline chỉ là một mảng các đối tượng LatLng chứ không phải các Polylines riêng lẻ. Tôi nghĩ rằng bạn có thể cần một mảng riêng biệt cho các polylines, mà sau đó bạn có thể lặp lại để loại bỏ tất cả chúng. Tạo một mảng mảng toàn cầu.

var line = []; 
polyline = new google.maps.Polyline({ 
     path: points, 
     strokeColor: "#FF0000", 
     strokeOpacity: 1.0, 
     strokeWeight: 2 
    }); 
line.push(polyline); 

Bây giờ bạn đang thúc đẩy tất cả các đối tượng polyline thành một dòng mảng. Bạn có thể làm cho nó vô hình hoặc loại bỏ nó khỏi bản đồ bằng cách lặp nó như thế này:

for (i=0; i<line.length; i++) 
{       
    line[i].setMap(null); //or line[i].setVisible(false); 
} 
-1
mMap.clear() 

dòng đó sẽ làm mới dụ của googlemap của bạn

+1

Loại Lỗi: map.clear không phải là chức năng – johnlowvale

+0

Hoạt động tuyệt vời cho Android! –

+0

phương thức clear() đơn giản không tồn tại đối với đối tượng bản đồ của Google! –

Các vấn đề liên quan