2016-09-09 8 views
0

今、openlayersに既に表示されているエンティティを削除する際に問題がありました。 私は車のパスを含む2つのソースKMLを持っています。私は最初start.vectorsource変数に格納するページ をロードし開始にkml2格納を表示する必要があるツールを使用した後ことkml1を表示vector.layerの機能を削除または削除する

kml1 10目印 kml2 50目印

.vectorfiltered変数。私は分析

start.vectorsource.getSource().forEachFeature(function (feature) { 
      if (typeof feature.getId() !== "undefined") { 
       if (feature.getId().indexOf(mobileName) !== -1) { 
        entity.push(feature.getId()); 
       } 
      } 

     }); 
     start.vectorfiltered.getSource().getFeatures().forEach(function (feature) { 
      if (typeof feature.getId() !== "undefined") { 
       for (var k = 0; k < entity.length; k++) { 
        if (feature.getId() === entity[k]) { 
         console.log(feature.getId() + " " + entity[k]); 
         start.vectorsource.getSource().removeFeature(feature); 
        } 
       } 
      } 
      interfaces.newFeature.push(feature); 
     }); 

start.vectorsourceにstart.vectorfilteredの要素(特徴)があるので、もし二つの変数の内容を比較すると、それはここでは、このアイテムを削除 は、コードの抜粋でありますアイテムID(feature.getId())を取得するためのstart.vectorsourceと、ビークル名(mobilename)が含まれている場合はIDを探しています。 変数エンティティにIDを格納します

私はstart.vectorfilteredを分析し、変数エンティティと比較します。等しい場合は、そのIDでstart.vectorsourceの機能を削除します。ここで

は、エラーが取得される:

TypeError: this.s[b] is undefined http://localhost:7299/js/ol3/ol.js Line 636 
+0

の属性のみエラーを報告するデバッグビルド(オール-debug.jsとするのが最良)を使用しているという事実におそらくある代わりにfeature.get('id')を試してみてください。 – bartvde

答えて

0

私は問題はあなたがそうfeature.getId()が動作しません、実際のIDを持っていないという事実から来ていると思います。

は、これが原因あなたのIDが機能