私は、サーバー側に用意されているKMLからいくつかの等高線をプロットしています。私は何をしたいのは、以下のビューごとに、ビューポートのエッジ付近の各輪郭のラベルを追加します:開いているレイヤーの輪郭にラベルを付ける3.17.1
私の現在のアプローチは、各マップのエッジと使用を歩くことです輪郭/特徴が[x、y]にあるかどうかを判断するためにforEachFeatureAtPixelを使用します。輪郭が見つかった場合、ラベルは現在のピクセルを基準にして追加され、輪郭/フィーチャごとに1つのラベルだけが追加されるように、フィーチャの「hasLabel」プロパティが追加され(trueに設定されます。
ユーザーがズームまたは翻訳でビューポートを変更すると、ラベルが削除され、同じプロセスが再度実行されて、ラベルが正しい位置に追加されます。
輪郭が描かれてからラベルが追加されるまでにかなりの遅延(〜10秒)があると訴えている顧客もいます。私はこれを私の開発マシンでは観察しませんが、かなり高い仕様です。
私の質問は、ラベルの位置を計算するより速い方法がありますか? (いくつかはビルトインおそらく現在のビューを越えて延びるすべての機能を一覧表示しますOpenLayersを機能?)
追加:
https://lqsts.blob.core.windows.net/temp/DayContours.kml:私が利用可能輪郭の二組のためのKMLソースを作った
https://lqsts.blob.core.windows.net/temp/MinuteContours.kml
これは 'jsts' libを使って行うことができます。現在のmbrとあなたの等高線との交点を走らせ、交点にラベルを置きます。もちろん、これはjstsライブラリをインクルードする必要があることを意味します。輪郭を生成するためのコードを提供すれば、私はdemostrateするためのフィドルを作成します。 – pavlos
本当にオファーのために多くの感謝!私は2つの輪郭(緑と青)のセットのKMLソースファイルへのリンクを追加しました。 JSTSを使用して設定されたいずれかのフィドルは、実際には非常に役に立ちます。 – ProfNimrod