2010-12-30 13 views
9

これに関連する以前の質問はすべてV2に関連していますが、これは役に立たないものです。Google Maps Polyline - どうすれば削除できますか?

だから、私は、二つのマーカーを作成

[「から」]マーカー[「と」]とマーカーとして配列にそれらを保存してブリリアントこの

function route(){ 
     for(var key in markers) { 
      flightPlanCoordinates.push(markers[key].position); 
     } 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
    }); 
    flightPath.setMap(map); 
} 

でそれらを追加します。 しかし、次回は(配列の新しいマーカーで)それを使用すると、以前のポリラインを削除せずにそこにポリラインが追加されます。 私は、最初の配列、flightPath、setMap(null)などを削除して、すべてを試したようです。

新しい行を作成する前に前の行を削除する正しい方法はありますか?

EDIT: ソリューションを解決し

function route(){ 
    var flightPlanCoordinates = []; 
    for(var key in markers) { 
     flightPlanCoordinates.push(markers[key].position); 
    } 
    if(flightPath) { 
     flightPath.setPath(flightPlanCoordinates); 
    } else { 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
     }); 
     flightPath.setMap(map); 
    } 
} 

理由: flightPlanCoordinatesは範囲内で初期化する必要があり、これは適切にそれを掃除、配列にそれが使用されるたびにリセットされます。 (また、コードは少しよりよい作るために、以下の入力に感謝。

+0

あなたはこのプロジェクトの作業のリンクを共有することができますが非表示になりますか?ローカル航空会社と同様のことをやっています。 – andufo

答えて

3

は私がflightPath = new...varが表示されていないので、私はflightPathがグローバル変数であると推定。

function route(){ 
    //flightPath.setMap(null); Doesnt't work!? 
    for(var key in markers) { 
     flightPlanCoordinates.push(markers[key].position); 
    } 
    if(flightPath) {//If flightPath is already defined (already a polyline) 
     flightPath.setPath(flightPlanCoordinates); 
    } else { 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
     }); 
     flightPath.setMap(map);//It's not necessary to setMap every time 
    } 

} 
+0

実際にはflightPathが範囲内にあります。しかし、setMap(null)は*動作しません。 – Mantar

1

function traffic(map){ 
// polyline 
this.path=null; 
this.map = google.maps.Map(ele, opt); 
} 
traffic.prototype._draw = function() 
{ 
    //create new polyline 
    var path = new google.maps.Polyline({ 
     path: this.get('latlngArr'), 
     strokeColor: "#FF0000", 
     strokeOpacity: 1.0, 
     strokeWeight: 2 
    }); 
    //delete old 
    var prepath = this.path; 
    if(prepath){ 
     prepath.setMap(null); 
    } 
    //new polyline 
    path.setMap(this.map); 

    this.path = path; 
} 
7

と仮定すると、「そのmypolylineは」あなたのポリラインオブジェクトである、あなたも試すことができます。

mypolyline.setPath([]); 

この方法では、あなたがポリラインから座標を取り出すされている効果でそれを地図から削除します。

1

flightPathはLatLngオブジェクトの配列であり、個々のポリラインではありません。ポリラインのために別の配列が必要になると思います。ポリラインをループしてそれらをすべて削除することができます。 グローバル配列行を作成します。

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

ここで、すべてのポリラインオブジェクトを配列行にプッシュします。あなたはそれが見えない作るかのようにそれをループすることにより、マップから削除することができます:

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

strokeWeightセット:0その後、ポリラインは

関連する問題