在谷歌地球插件中创建3d形状

时间:2012-05-21 11:59:35

标签: javascript 3d google-earth-plugin

首先感谢阅读。 我有一个Web应用程序,它大量使用Google Earth Plugin来显示一些传感器数据和其他内容。 我试图让用户能够定义在插件中绘制它们的区域和卷。 我能够添加区域功能(例如创建,可视化,编辑和删除)。 现在我正在研究卷,但我真的不知道处理它们的最佳方法是什么。一个值得注意的重要事项是,我只对具有平行上下表面的体积感兴趣(没有金字塔,没有复杂的数字,只有prisms) 我想到的第一个想法是创建一个由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形状或内置几何? Nota我不能依赖于3D模型(因此外部Kmz无法加载),因为最终3D形状创建将成为用户的特征。

1 个答案:

答案 0 :(得分:1)

只需创建上部多边形(例如,确保坐标包含高度),然后将ensure设置为1.您可以使用setExtrude(true)在API中执行此操作。

有关详细信息,请参阅https://developers.google.com/kml/documentation/kml_tut#polygons

我还建议您查看实用程序库 - 它使这样的事情更加简洁。例如,请参见此挤压多边形示例:http://earth-api-utility-library.googlecode.com/svn/trunk/extensions/examples/poly-draw-extruded.html