問題タブ [cesium]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
827 参照

mouseevent - セシウム マウス イベントのキーの交換とカスタム イベントの作成

私はセシウムが初めてなので、非常に基本的なヘルプが必要です。

自分で動作をコーディングせずに、マウスの左ボタンと右ボタンの動作を交換するにはどうすればよいでしょうか?

さらに、独自のマウス ボタン イベントを定義するための基本的なコーディング例を教えてもらえますか? Sandcastle のものを実行しようとしましたが、現時点では機能していません。問題は今のところわかりません。

0 投票する
2 に答える
3357 参照

javascript - Cesium.js でポリゴンを表示するためにカメラをズーム/移動する方法 (ビューポートをポリゴンの境界に合わせる)

わかりました、明らかにこれは高度な機能ではないため、私は盲目かもしれません..しかし、 Cesium.js のカメラドキュメントを見ていますが、ビューを単純にズーム/移動してポリゴンを表示する方法が見つからないようです?

次のように、緯​​度/経度の平均値を使用してポリゴンを表示するようにカメラを配置できます。

しかし、それはゴミです。ズームができません...ズーム/ビューポートをポリゴンに合わせて調整したいです。

私が見落としているものを誰か指摘できますか...

0 投票する
1 に答える
1088 参照

javascript - 複数の長方形をCesiumjsのエンティティに関連付けるにはどうすればよいですか?

ドキュメントでは、エンティティはさまざまな形状 (ポイント、ポリゴン、ポリライン、長方形、ビルボードなど) を関連付けることができるようです。しかし、たとえば、色や形が異なる複数の長方形や多角形を追加するにはどうすればよいですか?

0 投票する
2 に答える
8888 参照

javascript - Cesium ポリゴンまたはラインを地形面に「ドレープ」する方法

だから、私はセシウムを使用しており、ポリゴンまたはラインを追加して、地形面のプロパティ境界を表現したいと考えています。

私のポリゴンは平らな/楕円体の表面で正常に動作しますが、残念ながら、地形レイヤーが表示されている場合、ポリゴンは自動的に表面にドレープしません。

当然のことながら、実際には z/height の値を持っていません。そのため、sampleTerrain.js promise メソッドを使用して、地形に基づいて高さの値を補間しています。この部分は正常に機能し、高さの値を取得します。しかし、その後は?

高さのある位置でポリゴン エンティティを作成しようとしましたが、役に立ちませんでした。高さの値を無視するだけです。docs を読むと、高さの値が取り込まれていることがわかります.すべての「位置」配列は2次元ですか?

考慮されている高さの値への唯一の参照は、PolygonOutlineGeometryにあり、これには と呼ばれる有望な外観のプロパティがありますperPositionHeight

これは本質的に私が望むものです-ポリゴン全体の高さを設定したくありません.すべてのポイントの高さの値を使用したい..

これが私の失敗した試みの1つです:

エンティティ/ポリゴン:


結論:地形の表面にうまく収まるポリゴンまたはポリライン エンティティが必要です。

編集:

受け入れられた回答のコメントにあるOrange Polygon の例をsampleTerrain.jsと組み合わせて使用​​すると、z 値を持たない位置のリストを使用して、ポリゴンを地形に「ドレープ」することをシミュレートできました。大まかな例を次に示します。

0 投票する
1 に答える
1661 参照

javascript - CesiumJS メモリ管理の問題

私は cesiumjs で 3d モデルの viwer を作成しています。geojson は URL から要求され、小さなモデルでは問題なく機能します。複雑な json マルチポリゴン ファイルと json url 要求データが 16 MB を超える場合、セシウムの解析とレンダリングに非常に時間がかかり、別のモデルを呼び出すと、メモリ不足のエラーで Web ブラウザーがクラッシュします。横にあるクロムをチェックしたところ、URLからの16MBのgeojsonで約900のメモリを消費しました。メモリ管理のより良い方法はありますか? または、この問題に取り組むためのヒント。解決策の 1 つは、そのモデルの geojson を送信する前に 3D メッシュを簡略化することですが、クライアント側でのメモリ管理に関連して質問しています。

0 投票する
1 に答える
3733 参照

javascript - cesium.js で heatmap.js を使用する

Cesium アプリケーションでヒートマップを表示することに興味があります。heatmap.js Web サイトには、ヒートマップ オブジェクトをレイヤーとして追加するリーフレットデモなど、多数のデモがあります。Cesium.jsでそのようなことを行う方法があるかどうか疑問に思っています。1 つ (または複数) の PNG をレンダリングし、それをレイヤーとして表示することについて人々が言及しているのを見てきました。

Cesium でヒートマップの例を見たことがありますが、それがどのように行われたかは説明されていません (heatmap.js を使用したかどうかさえわかりません)。これについてCesium.js GitHubにも問題がありますが、積極的に追求しているようには見えません。

0 投票する
1 に答える
424 参照

zooming - セシウムのリサンプリング

Cesium では、線形 (または 2D では双線形)、エルミート、ラグランジュなど、いくつかの異なる補間方法が提供されていることを知っています。これらの方法を使用して、ポイントのセットを再サンプリングしたり、サンプリングされたポイントを近似する曲線を作成したりできます。

しかし、私が持っている質問は、Cesiumが 3D シーンをレンダリングしていて、ユーザーがあちこちでズーム/パンしているときに、 Cesium が内部的に使用する方法は何ですか? これは、プログラマーがラスターなどにアクセスできる場合ではないため、すべての途中で補間関数を直接呼び出すことはできません。Cesium は、ユーザーの制御に応じて、可能な限り迅速に独自の処理を行っています。

私の推測では、デフォルトはバイリニアですが、それがわからず、何が使用されているかを明示的に示しているドキュメントを見つけることもできません。さらに、ラグランジュ リサンプリングなど、これらのアクティビティ中にセシウムに特定のリサンプリング方法を強制的に使用させる方法はありますか? 実際、それが私がしなければならないことです: シーンのレンダリング中に Cesium にラグランジュ リサンプリングを強制的に適用させます。任意の提案をいただければ幸いです。

編集: 問題の詳細な説明は次のとおりです…</p>

セシウムを使用して地球の 3D モデルをセットアップし、グレースケール画像チップをモデル地球表面の適切な位置に配置し、その結果をセシウム ウィンドウに表示するとします。視点が地球の表面から十分に離れている場合、ウィンドウのイメージ チップ部分に表示されるピクセル数は、イメージ チップ ソースで使用できる実際のピクセル数よりも少なくなります。ダウンサンプリングが発生します。同様に、ユーザーが繰り返しズームインすると、画像チップ ソース内の実際のピクセル数よりも多くのピクセルが画像チップ全体に表示されるポイントが発生します。アップサンプリングが発生します。一般に、Cesium がピクセル データ ソースを含むフレームを描画するたびに、リサンプリングが発生します。それは最近傍(疑わしい)、線形(おそらく)、立方体、ラグランジュ、エルミート、またはさまざまなリサンプリング手法のいずれか。私の会社では、画質を確保するためにラグランジュ リサンプリングの使用を必要とする大規模な政府プログラムの一部としてセシウムを使用しています。(NGA は、そのプログラムとアナリスト ツールに最適であると判断し、それをコンプライアンス要件にしました。したがって、選択の余地はありません。)

ここに問題があります。ユーザーがモデルとやり取りしている間、たとえばズームインしている間、描画プロセスはプログラマーの制御下にありません。リサンプリングは、Cesium レイヤー自体 (うまくいけば) またはさらに下位のレイヤー (たとえば、Cesium が依存している可能性のある WebGL 関数) で行われます。したがって、このリサンプリングにどの手法が使用されているかはわかりません。さらに悪いことに、その手法がラグランジュでない場合、それを変更する方法がわかりません。

したがって、質問は次のようになります。セシウムは明示的にリサンプリングを行っていますか? もしそうなら、それはどのような技術を使用していますか? そうでない場合、セシウムが画像ファイルをマップにレンダリングするために依存している描画パッケージと関数は何ですか? (これらのレイヤーが使用している可能性のある技術や利用可能な技術を掘り下げて判断することができます。)

0 投票する
1 に答える
4426 参照

polyline - セシウムでポリライン(ある程度の高さ)を表示する

このコードの何が問題なのか誰か教えてください。

指定された座標にボックスを表示しますが、ポリラインを描画しようとすると、次のエラーが発生します: Uncaught TypeError: Cannot read property 'push' of undefined ( https://cesiumjs.org/Cesium/Sourceの 300 行目) /DataSources/Entity.js )

このようなものが欲しい https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Custom%20DataSource.html&label=Showcases

前もって感謝します。