0

我有数百个地标都在一个文件夹中。我试图让标签只出现在某个高度以下。(地标是通过从 ArcGIS 导出图层创建的,我认为应该以图层坐标系使用的单位指定高度,在这种情况下,以英尺为单位;如果我错了,请纠正我。)但是,我对<Region>标签所做的一切似乎都不起作用;标签愉快地出现在所有高度。这是我正在使用的代码;谁能告诉它有什么问题?

<Document id="DocumentName">
  <name>NameGoesHere</name>
  <Snippet></Snippet>
  <Folder id="NameOfTheFolder">
    <name>NameGoesHere</name>
      <Region id="highAltitude">
        <LatLonAltBox>
          <north>40</north>
          <south>37</south>
          <east>-74</east>
          <west>-79</west>
          <minAltitude>50000</minAltitude>
          <maxAltitude>500000</maxAltitude>
        </LatLonAltBox>
        <LabelStyle id="styleNameHere">
          <scale>0</scale>
        </LabelStyle>
      </Region>
    <Snippet></Snippet>
                ...
    <placemark> ... </placemark>
    <placemark> ... </placemark>
    <placemark> ... </placemark>
                ...
  </Folder>
</Document>

所有这些代码的重点是在 50,000 英尺以上的高度隐藏标签,但它没有做任何事情。在代码的末尾,在</Folder>标签之后但在标签之前</Document>,有一些代码是在导出文件时生成的,用于指定标签样式。但是不管我删不掉那<scale>部分,好像都没有效果。该代码如下:

<Style id="Stylename">
  <IconStyle>
    ...
  </IconStyle>
  <LabelStyle>
    <color> ... </color>
    <scale> ... </scale>
  </LabelStyle>
  <PolyStyle>
     ...
  </PolyStyle>
</Style>

我怀疑我在语法方面做错了,但是,因为直到几天前我还没有使用 KML 的经验,所以我不确定问题是什么。我很欣赏任何关于为什么这不起作用的想法。

4

1 回答 1

0

您需要在区域中定义Lod(细节级别),否则它将始终出现。

<Region id="highAltitude">
  <LatLonAltBox>
   ...
  </LatLonAltBox>
  <Lod>
    <minLodPixels>256</minLodPixels>
  </Lod>
<Region>

minLodPixels定义区域的大小,如果它小于屏幕上的最小像素数,则不显示该区域。

https://developers.google.com/kml/documentation/kmlreference#lod

此外,LabelStyle在区域内无效。那必须出现在一个<Style>元素中。如果 KML 的行为与您预期的不同,10 次中有 9 次是语法错误 - 尝试使用KML 验证器对其进行验证

于 2013-06-01T00:59:24.900 回答