2016-10-11 18 views
0

特定のズーム(円からシンボル)でレイヤーのスタイルを変更したいと思います。私がズーム5をクロスするとき、私ができると思ったのは、私の前のレイヤーを削除し、古いソースで新しいレイヤーを作成することでした。実際、それは私にエラーを与える。レイヤー間で同じソースを共有する

同じデータで新しいソースを作成すると、すべて正常に動作しますが、エラーはソースに関するものです。私が理解していないことは、ソースがまだ私がそれとやりとりできるように存在しているということです。

、私のfiddleを見つける参照するには、コンソールを開いてください:

  • ズーム(ズーム5を待つ)
  • ソース
  • エラー

    glMap.addSource('yacht', { 
        type: 'geojson', 
        data: data, 
        buffer: 256 
    }); 
    glMap.addLayer({ 
        "id": "yachtL", 
        "type": "circle", 
        "interactive": true, 
        //'style': '/bright-v8.json', 
        "source": "yacht", 
        'layout': {}, 
        'paint': { 
         'circle-color': '#262626', 
         'circle-opacity': 0.8 
        } 
    }/*, "cargoL"*/); 
    
        removeSpinner(); 
    
  • に含まれるデータ

答えて

2

新しいレイヤーに新しいIDを渡すと、それが機能します。現在、彼らは両方とも 'yachtL'というIDを持っています。

+0

まあまあです...同じid 'yachtL'で前のレイヤーを削除すると、なぜ私は理解できません。あなたは説明できますか? 私は自分のレイヤーとのやりとりを失いたくないということです(つまり、私の関数はyachtLを呼びます。何のズームがあっても、私が持っている各レイヤーの関数を複製したくありません)。 私のアプリでは、その問題について、ソースを削除して同じIDを使って再作成した場合、yachtLをレイヤーIDとして使用できます。私は私の層のIDを変更する代わりに、その回避策を続けるだろうと思う。 – So4ne

+1

私はマップボックスglに新しいので、私は本当にすべての機能を理解しているかわからない。私は実際にはレイヤー内の単一のフィーチャのスタイルを変更する方法を考え出すのに苦労しましたが、とにかくうれしいことです。 – malcolm

関連する問題