KML图层排序

时间:2019-04-08 14:35:20

标签: kml google-earth

我已经从esri Shapefiles创建了KML文件,以便在Google Earth中使用。问题是当我进入两个文件时,底部的一组多边形将显示顶部的多边形上的线,从而隐藏了该区域的一部分。

我已经看到人们参考了一些有关代码的内容,但是我希望有人可以提供不同的非编码解决方案,或者更好地解释该代码的去向及其工作方式。

对我来说这没有意义。

我尝试过更改两层的位置,但是任何方法都无法将较小的一组多边形带到顶部。

我要寻找的是在顶部时完全可见的较小的polgyon线组,在第一个上方的较大的多边形组。

1 个答案:

答案 0 :(得分:0)

如果您希望一个多边形始终位于另一个都 clampedToGround 的多边形之上,则应使用gx:drawOrder属性。

KML文档:

  

<gx:drawOrder>

     

“一个整数值,指定绘制多条线的顺序   字符串(或多边形)。首先绘制的 LineStrings 可能是部分或全部   被 LineStrings 遮盖住了(或更高)绘制顺序。这个元素可能    与<gx:outerColor><gx:outerWidth>一起需要   双色线彼此交叉时,<LineStyle>中的元素。”

在下面的示例中,红色多边形绘制在蓝色多边形上。要使蓝色多边形在红色多边形上进行绘制,请将其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>