2013-07-23 60 views
2

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

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

回答

2

您可以指定<gx:drawOrder>元素(这是一个Google Earth KML extension)来排列KML中的多边形以及线和环。

注意documentation(见下文)只指定了LineStrings,但也适用于Lines,LinearRings和Polygons。任何地方在下文中都会提到“LineStrings”,只是用线,圆环和多边形替换它。对Polygons的drawOrder支持没有记录,但报告为issue

KML文件:

<gx:drawOrder>

“的整数值,它指定用于绘制多个线 串顺序的LineString第一拉伸可以通过的LineString部分或完全被遮蔽(或更高)的抽签顺序,可能需要 连同<gx:outerColor>和元素 <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>