首先感谢您的阅读。我有一个网络应用程序,它大量使用谷歌地球插件来显示一些传感器数据和其他东西。我试图让用户能够定义在插件中绘制它们的区域和体积。我能够添加区域特征(例如创建、可视化、编辑和删除)。现在我正在处理卷,但我真的不知道处理它们的最佳方法是什么。需要注意的重要一点是,我只对具有平行上下表面的体积感兴趣(没有金字塔,没有复杂的图形,只有棱镜)我想到的第一个想法是创建一个由 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 模型(因此无法加载外部 Kmz),因为最后创建 3d 形状将是用户的功能。