0

まず第一に読んでくれてありがとう。GoogleEarthプラグインを多用してセンサーデータなどを表示するウェブアプリケーションがあります。プラグインでそれらを描画する領域とボリュームを定義する機能をユーザーに提供しようとしています。エリア機能(作成、視覚化、編集、削除など)を追加することができました。今、私はボリュームに取り組んでいますが、それらを処理するための最良の方法が本当にわかりません。注意すべき重要な点は、上面と下面が平行なボリューム(ピラミッドなし、複雑な図形なし、プリズムのみ)にのみ関心があるということです。最初に頭に浮かんだアイデアは、2つのポリゴンと上面のすべてのポリゴン頂点を下面のそれぞれのポリゴン頂点に接続するためのエッジの配列。何かのようなもの:

    //Create the upper surface (polygon)  
    var aPolygonUpperPlacemark = ge.createPlacemark("");
    var aPolygonUpper = ge.createPolygon("");
    aPolygonUpper.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);
    aPolygonUpperPlacemark.setGeometry(aPolygonUpper);
    var aOuterUpper = ge.createLinearRing("");
    aPolygonUpper.setOuterBoundary(aOuterUpper);
    ge.getFeatures().appendChild(aPolygonUpperPlacemark);

    //Create the lower surface (polygon)
    var aPolygonLowerPlacemark = ge.createPlacemark("");
    var aPolygonLower = ge.createPolygon("");
    aPolygonLower.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);
    aPolygonLowerPlacemark.setGeometry(aPolygonLower);
    var aOuterLower = ge.createLinearRing("");
    aPolygonLower.setOuterBoundary(aOuterLower);
    ge.getFeatures().appendChild(aPolygonLowerPlacemark);

    var myPrism = {
        upperSurface: aPolygonUpperPlacemark,
        lowerSurface: aPolygonLowerPlacemark,
        edges: new Array()
    };

ここでの問題は、側面が実際の表面としてではなく、線としてのみ表示されることです。一方、側面ごとに別のポリゴンを作成することもできますが、これにより、このような3D形状の管理が私が望むものよりも複雑になります。
だから私の質問は、3D形状またはおそらく組み込みのジオメトリを処理するためのより良い方法はありますか?
最後に3D形状の作成がユーザーの機能になるため、3Dモデルに依存できないことに注意してください(したがって、外部Kmzをロードできません)。

4

1 に答える 1

1

上部のポリゴンを作成し(たとえば、座標に高度が含まれていることを確認します)、1に設定されていることを確認します。これは、APIでsetExtrude(true)を使用して行うことができます。

詳細については、 https://developers.google.com/kml/documentation/kml_tut#polygonsをご覧ください。

また、ユーティリティライブラリを確認することをお勧めします。これにより、このようなことがはるかに簡潔になります。たとえば、この押し出しポリゴンの例を参照してください:http: //earth-api-utility-library.googlecode.com/svn/trunk/extensions/examples/poly-draw-extruded.html

于 2012-05-22T00:33:58.543 に答える