少し背景。特定のナビゲーションアイテムをクリックしたときにナビゲーション設定があり、マップ上にmarkers
が作成されます。別のナビゲーション項目をクリックすると、以前のmarkers
が削除され、新しいナビゲーション項目が設定されます。
さて、私はpolylines
で作業していて、ここでpolylines
を使用して同じ概念を作成しようとしていますが、困難な状況にあります。ここに私が持っているものがあります:
// Global variable for array of lines
var points= [];
私のポイントを設定します。
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);
ポリラインを設定します。
var polyline = new google.maps.Polyline({
path:points,
strokeColor:"#FF0000",
strokeOpacity:1.0,
strokeWeight:2
});
ラインでマップを初期化します。
polyline.setMap(map);
すべてうまくいきます。線が作成され、私のマーカーの間に表示されます。それらを削除しましょう(または削除しないでください...)
function removeLines() {
if (points) {
points.length = 0;
}
points = [];
}
関数の最初でremoveLines()が呼び出されてクリアされ、新しいものがセットアップされます。これで実際にpoints配列内の私のポイントがクリアされますが、マップ自体にはpolylines
が引き続き表示され、マーカーのように消えることはありません。
何を与える?
マップから行を削除するpolyline.setMap(null)
を実行する必要があります。 ドキュメント 。
ポリラインは、LatLngオブジェクトの配列であり、個々のポリラインではありません。おそらく、ポリライン用に個別の配列が必要だと思います。ポリラインをループしてすべて削除することができます。グローバル配列行を作成します。
var line = [];
polyline = new google.maps.Polyline({
path: points,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
line.Push(polyline);
これで、すべてのポリラインオブジェクトを配列線にプッシュしています。次のようにループすることで、マップを非表示にしたり、マップから削除したりできます。
for (i=0; i<line.length; i++)
{
line[i].setMap(null); //or line[i].setVisible(false);
}