Как снять отметки с папок в файле KML

Я сделал visibility равным 0, но мне не повезло, все еще загружаю все данные при загрузке с помощью Google Планета Земля. Как снять отметку со всех папок и внутренних элементов, чтобы пользователь мог выбрать то, что когда-либо требовалось позже. Я создаю KML через С#, и я публикую небольшую часть большого файла KML, который я конвертирую в KMZ. Что не так в следующем фрагменте 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>

person peter    schedule 20.02.2017    source источник


Ответы (1)


В Google Планета Земля есть «функция», которая противоречит тому, как спецификация KML 2.2 описывает, что данные видны при видимости родительских папок.

В стандарте OGC KML 2.2 указано, что «для того, чтобы объект был видимым, тег kml:visibility всех его предков также должен иметь значение 1 или true». Это означает, что при видимости = 0 для родительской папки все дочерние метки, содержащиеся в папке, должны быть невидимыми.

Однако Google Планета Земля реализует видимость таким образом, что видимость дочернего элемента перекрывает видимость родительских папок, даже если видимость не определена явно (по умолчанию видимость = 1), и это нарушает стандарт, как указано выше. Об этом сообщалось как об ошибке в 2009 году и описывалось здесь. Google отреагировал на проблему следующим образом:

«Видимость всегда переопределялась на уровне дочерних элементов, и ее изменение нарушило бы существующий код»

Это означает, что все метки KML, которые не должны отображаться при запуске, должны явно иметь видимость 0, а не просто устанавливать ее один раз на уровне папки/документа.

person JasonM1    schedule 22.02.2017