如何取消选中KML文件中的文件夹

时间:2017-02-20 20:35:24

标签: c# .net xml kml kmz

我已将visibility设为0但完全没有运气,当我加载Google地球时仍然加载所有数据。如何取消选中所有文件夹和内部项目,以便用户可以选择以后需要的内容。我是通过c#创建KML,我正在发布我要转换为KMZ的大型KML文件的一小部分。跟随kml代码段

有什么问题
<?xml version="1.0" encoding="utf-8"?>

<kml:kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:json="http://www.w3.org/2005/Json">

  <kml:Folder>

    <kml:visibility>0</kml:visibility>

    <kml:name>Test</kml:name>

    <kml:open>1</kml:open>

    <kml:Folder>

      <kml:visibility>0</kml:visibility>

      <kml:name>2G</kml:name>

      <kml:open>1</kml:open>

      <kml:Folder>

        <kml:visibility>0</kml:visibility>

        <kml:name>Icro</kml:name>

        <kml:Folder>

          <kml:visibility>0</kml:visibility>

          <kml:name>Working</kml:name>
        </kml:Folder>
      </kml:Folder>
    </kml:Folder>
  </kml:Folder>

  <kml:Folder>

    <kml:visibility>0</kml:visibility>

    <kml:name>3G</kml:name>

    <kml:open>1</kml:open>

    <kml:Folder>

      <kml:visibility>0</kml:visibility>

      <kml:name>Testro</kml:name>

      <kml:Folder>

        <kml:visibility>0</kml:visibility>

        <kml:name>Working</kml:name>

        <Document xmlns="http://www.opengis.net/kml/2.2">

          <name>POINTS</name>
        </Document>
      </kml:Folder>
    </kml:Folder>
  </kml:Folder>
</kml:kml>

1 个答案:

答案 0 :(得分:1)

有一个&#34;功能&#34;在Google地球中,与父文件夹的可见性可见的KML 2.2规范描述数据的方式相矛盾。

OGC KML 2.2标准声明&#34;为了使特征可见,其所有祖先的 kml:visibility 标记也应设置为1或true&#34;。这意味着父文件夹上的visibility = 0应该使文件夹中包含的所有子地标都不可见。

但是,Google地球会实现可见性,以便子元素上的可见性会覆盖父文件夹的可见性,即使未明确定义可见性(默认情况下为visibility = 1),这也违反了上述标准。这在2009年报告为bug,并描述了here。 Google对此问题的回答如下:

  

“可见性始终在子元素级别上被覆盖,并且   改变这将破坏现有代码“

这意味着所有不想在启动时显示的KML地标必须明确具有可见性0,而不是仅在文件夹/文档级别设置一次