基本上,我希望Surface Shapes默认情况下会在Tactical Symbols之上呈现。以下是在Worldwind示例中重新创建的问题
public class TestApp extends ApplicationTemplate {
public static class AppFrame extends ApplicationTemplate.AppFrame {
public AppFrame() {
// Symbol
RenderableLayer symbolLayer = new RenderableLayer();
TacticalSymbol symbol = new MilStd2525TacticalSymbol("suzp-----------", Position.fromDegrees(0.0, 0.0));
symbol.setAltitudeMode(WorldWind.CLAMP_TO_GROUND);
symbol.setShowLocation(false);
symbolLayer.addRenderable(symbol);
// Shape
RenderableLayer shapeLayer = new RenderableLayer();
SurfaceCircle circle = new SurfaceCircle(Position.fromDegrees(0.0, 0.0), 100e4);
shapeLayer.addRenderable(circle);
getWwd().getModel().getLayers().add(symbolLayer);
getWwd().getModel().getLayers().add(shapeLayer);
}
}
public static void main(String[] args) {
start("World Wind Testing", AppFrame.class);
}
}
无论我添加图层的顺序如何,战术符号始终呈现在表面形状之上。我假设这是因为形状的呈现方式不同:
“图层按照它们在图层列表中定义的顺序显示。(但是,图层中的3D形状按照从远到接的顺序显示”
我有一种预感,我可以通过扩展战术符号并实现 OrderedRenderable 接口并覆盖 makeOrderedRenderable()方法来解决此问题,但我不确定是否我应该做出哪些具体的改变,以实现所需的功能,而不会破坏其他层。