3

我有相邻的多边形(clampToGround),其中一部分边界重叠。我希望能够控制哪一个出现在顶部。到目前为止,我发现唯一可行的方法是按堆栈顺序列出多边形地标(列表中的最后一个出现在顶部)。但是,我想根据其他逻辑组织地标,并希望有一种编码方法来指定哪个多边形位于顶部。

请注意,我也尝试使用 relativeToGround 和小的高程差异,但这会导致多边形填充药水消失在地形下方。

4

1 回答 1

3

您可以指定<gx:drawOrder>元素(它是Google 地球 KML 扩展)来对 KML 中的多边形以及线和环进行排序。

请注意文档(见下文)仅指定 LineStrings,但也适用于 Lines、LinearRings 和 Polygons。下面提到的任何“LineStrings”只需将其替换为 Lines、Rings 和 Polygons。对 Polygons 的 drawOrder 支持没有记录,但被报告为问题

KML 文档:

<gx:drawOrder>

“一个整数值,它指定绘制多条线串的顺序。首先绘制的LineStrings可能会部分或完全被LineStrings以较晚(或更高)的绘制顺序遮盖。当双重时,可能需要此元素与<gx:outerColor><gx:outerWidth>元素 一起使用<LineStyle>彩色线条相互交叉。”

请注意,这仅适用于支持 Google 地球 KML 扩展的客户端。

在下面的示例中,红色多边形绘制在蓝色多边形上。要使蓝色多边形在红色上绘制,请将其 drawOrder 值更改为更高的数字。

 <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
    <Document>
        <Placemark>
            <name>Red Polygon</name>
            <description>gx:drawOrder=3</description>
            <Style>
              <LineStyle>
                <color>ff000000</color>
              </LineStyle>
              <PolyStyle>
                <color>ff0000ff</color>
              </PolyStyle>
            </Style>
            <Polygon>
                <gx:drawOrder>3</gx:drawOrder>
                <tessellate>1</tessellate>
                <outerBoundaryIs>
                    <LinearRing>
                        <coordinates>
                        14.456906,37.345497,0 14.949769,37.346531,0
                        14.960918,37.987563,0 14.45089,37.987521,0
                        14.456906,37.3455,0 
                    </coordinates>
                    </LinearRing>
                </outerBoundaryIs>
            </Polygon>
        </Placemark>        

        <Placemark>
            <name>Blue Polygon</name>
            <description>gx:drawOrder=2</description>
            <Style>
              <LineStyle>
                <color>ff000000</color>
              </LineStyle>
              <PolyStyle>
                <color>ffff0000</color>
              </PolyStyle>
            </Style>
            <Polygon>
                <gx:drawOrder>2</gx:drawOrder>
                <tessellate>1</tessellate>
                <outerBoundaryIs>
                    <LinearRing>
                        <coordinates>
                        14.83626,38.016863,0 14.835535,37.645589,0
                        15.47025,37.589266,0 15.470457,38.019158,0
                        14.83626,38.016862,0 
                    </coordinates>
                    </LinearRing>
                </outerBoundaryIs>
            </Polygon>
        </Placemark>
    </Document>
 </kml>
于 2013-07-24T22:02:53.517 回答