2016-10-28 9 views
1

リーフレットL.esri.dynamicMapLayerを使用して大量のポリラインをマップ上に表示していますが、ArcGIS Serverに描画要求を送信するにはしばらく時間がかかります。ユーザーがいくつかのズームやパンをすばやく行うと、一連の保留中のエクスポート要求が終了し、ArcGIS Serverに対する他の要求もブロックされます。最後のものを除くすべての輸出要求は役に立たない。マップのズームまたはパンごとにdynamicMapLayerが更新されないようにするにはどうすればよいですか?

他のクライアント側のレイヤーでは、レイヤーを自分でリフレッシュする前に、ユーザーがズームやパンを少なくとも2秒間停止していることを確認してリフレッシュを制御しています。 dynamicMapLayerの場合、どうすればよいですか?自動更新を一時停止または停止して、エクスポート要求を作成するときに自分自身を決定できますか?

パフォーマンスを向上させるためにタイルを使用することはできません。なぜなら、レイヤーは動的なままでなければならないからです。

答えて

3

dynamicMapLayerが地図のズームまたはパンごとに更新されないようにするにはどうすればよいですか?

できません。 It is designed that way

L.ImageOverlayではなく、L.GridLayerのサブクラスを作るように設計されていない限り、周囲はほとんどありません。

レイヤーを自分でリフレッシュする前に、ユーザーがズームやパンを少なくとも2秒間停止していることを確認して、リフレッシュを制御しています。 dynamicMapLayerの場合、どうすればいいですか?

恐ろしい、醜いハックです。 private L.Esri.DynamicMapLayer._updateメソッドを上書きして、前のメソッドのデコレータとなるようにします。

(function() { 
    var previousProto = L.Esri.DynamicMapLayer.prototype; 
    L.Esri.DynamicMapLayer.include({ 
    _update: function(){ 
     throttle(previousProto._update, 2000); 
    } 
    }); 
})(); 

これは醜いですが、それは最も良いコーディング慣行(プライベートメソッドを上書きする)に反し、壊れる可能性があります。

レイヤーを動的に維持する必要があるため、パフォーマンスを向上させるためにタイルを使用することはできません。

私は同意しません。 「タイル」は「静的」を意味するものではありません。キャッシュ破棄を簡単に適用するか、time dimensionまたはsend all data to the client and let it slice it into vector tiles for quick renderingを使用するか、Carto(DB)'s Torqueのような好きなものを使用します。

Esriツールで異なるタイルセットを簡単に作成できない、または変化するリソースのタイルアクセスを許可しない、またはクライアント側のデータ無効化をトリガーできないという事実は、それを達成することはできません。

+0

アンサーに感謝します。 zoomStartまたはdragStartでdynamicMapLayerを削除してから2秒後にそれを再追加するのはどうでしょうか?ちょうどこれを試して、それは動作するようです。それも醜いです...しかし、それは動作するようです。タイルには、どの行を表示するかどうかを制御するフィルタとして使用される属性があります。このパラメータには既に3つの可能性のある値があり、将来的にはより多くの可能性があります。クライアントはdynamicLayersの使用を継続し、より高度なズームレベルで単純化されたジオメトリを使用してパフォーマンスを向上させることを計画しています。おそらくDouglas-Peuckerアルゴリズムを使用しています。 – greenkarmic

+0

あなたのケースでは、いくつかの透明なタイルセットを作成し、必要に応じてマップに追加/削除します。必要に応じて、クリックした時点でのフィーチャーをデリゲートします。 VectorGridを使用することもできます。私は技術的な質問を強制するクライアントが間違ったやり方であることを(多くの回は)知っています。 – IvanSanchez

+0

面白いことに、クライアントと長い電子メールスレッドを終了したばかりで、最終的にタイルの使用を妥協するつもりはないと思います...もっと幸せではありませんでしたが、ダイナミックレイヤーを使用してマップを最適化しようと、最後の数日。彼女はダイナミックになるという大きなパフォーマンスの影響を受けなかっただけで、機能を妥協するつもりはありませんでした。私はタイルを使って彼女にプロトタイプを示した後、どれくらい速くそれを見せても、彼女は揺れ動いていませんでした。とにかく、私は透明なタイル、おそらくPNG8、属性値ごとに1セットを使用しています。 Phew。 – greenkarmic

関連する問題