26.12.2009 11:54

KML - ListStyle. Описание синтаксиса и пример создания модели здания с поэтажными планами.


Одно из свойств Стилей, описывающее способ отображения дочерних элементов объекта для которого указан данный стиль на панели "Метки" в Google Earth.

Например Вы можете использовать <ListStyle> для создания файлов kml/kmz содержащих модели зданий с поэтажными планами как на скриншотах ниже:

Архив с примером реализации этой возможности Вы сможете скачать прочитав эту статью...


Поэтажный план в Google Earth - первый этаж

 

Поэтажный план в Google Earth - второй этаж

 

Поэтажный план в Google Earth - весь дом


А для начала давайте рассмотрим Синтаксис:
<ListStyle id="ID">
<!-- specific to ListStyle -->
<listItemType>check</listItemType> <!-- kml:listItemTypeEnum:check,checkOffOnly,checkHideChildren,radioFolder -->
<bgColor>ffffffff</bgColor>               <!-- kml: цвет -->
<ItemIcon>                                    <!-- 0 или более описаний ItemIcon элементов -->
<state>open</state>                    <!-- kml:itemIconModeEnum:open, closed, error, fetching0, fetching1, or fetching2 -->
<href>...</href>                           <!-- anyURL -->
</ItemIcon>
</ListStyle>



где, элементы ствязанные с ListStyle
<listItemType>
Описывает вид отображения в режиме списка (возможны следующие варианты):
* check (по умолчанию) – режим при котором видимость объектов зависит от того установлен ли для данного объекта флажек.
* radioFolder – в данном режиме видим только один дочерний элемент объекта для которого применен стиль
* checkOffOnly – в данном режиме все элементы Container или Network Link делаются невидимыми одновременно, т. е. пользователь может выключить все элементы в Container или Network Link, но не может включить все элементы одновременно. Этот параметр полезен для элементов Containers или Network Links, содержащих большое количество данных.
* checkHideChildren - Использует обычный флажок для видимости для рассматриваемого объекта, но не отображает дочерние элементы Container или Network Link в режиме списка. Флажок позволяет пользователю переключить видимость сразу всех дочерних объектов в средстве просмотра.

<bgColor>
Описывает цвет фона для фрагмента (Snippet). Значения цвета и непрозрачности выражены в шестнадцатеричном формате.
Диапазон значений для любого цвета – от 0 до 255 (00 до ff). Для альфа значение 00 обозначает полную прозрачность, а значение ff – полную непрозрачность. Порядок выражений – aabbggrr, где aa=альфа (от 00 до ff); bb=синий (от 00 до ff); gg=зеленый (от 00 до ff); rr=красный (от 00 до ff).

<ItemIcon>
Описвывает значок, используемый при просмотре в режиме списка, который отражает состояние передачи папки или ссылки. Значки, связанные с режимами open и closed, используются для Folder и Network Link. Значки. связанные с режимами error и fetching0, fetching1 и fetching2 , используются для Network Link.

<state>
Указывает текущее состояние элемента NetworkLink или Folder. Возможные значения – open, closed, error, fetching0, fetching1 и fetching2. Эти значения можно сочетать, вставляя пробел между двумя значениями (без запятой).

<href>
Указывает URL-адрес изображения, используемого для элемента Feature в режиме списка.

Ниже приведен пример кода с сайта http://code.google.com, иллюстрирующий использование <ListStyle>


<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>ListStyle.kml</name>
<open>1</open>
<Style id="bgColorExample">
<ListStyle>
<bgColor>ff336699</bgColor>
</ListStyle>
</Style>
<Style id="checkHideChildrenExample">
<ListStyle>
<listItemType>checkHideChildren</listItemType>
</ListStyle>
</Style>
<Style id="radioFolderExample">
<ListStyle>
<listItemType>radioFolder</listItemType>
</ListStyle>
</Style>
<Folder>
<name>ListStyle Examples</name>
<open>1</open>
<Folder>
<name>bgColor example</name>
<open>1</open>
<Placemark>
<name>pl1</name>
<Point>
<coordinates>-122.362815,37.822931,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl2</name>
<Point>
<coordinates>-122.362825,37.822931,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl3</name>
<Point>
<coordinates>-122.362835,37.822931,0</coordinates>
</Point>
</Placemark>
<styleUrl>#bgColorExample</styleUrl>
</Folder>
<Folder>
<name>checkHideChildren example</name>
<open>1</open>
<Placemark>
<name>pl4</name>
<Point>
<coordinates>-122.362845,37.822941,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl5</name>
<Point>
<coordinates>-122.362855,37.822941,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl6</name>
<Point>
<coordinates>-122.362865,37.822941,0</coordinates>
</Point>
</Placemark>
<styleUrl>#checkHideChildrenExample</styleUrl>
</Folder>
<Folder>
<name>radioFolder example</name>
<open>1</open>
<Placemark>
<name>pl7</name>
<Point>
<coordinates>-122.362875,37.822951,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl8</name>
<Point>
<coordinates>-122.362885,37.822951,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>pl9</name>
<Point>
<coordinates>-122.362895,37.822951,0</coordinates>
</Point>
</Placemark>
<styleUrl>#radioFolderExample</styleUrl>
</Folder>
</Folder>
</Document>
</kml>


А теперь как и обещал Пример реализации отображения поэтажных планов здания в Google Earth.

 

Файл kml для просмотра примера в Google Earth ЗДЕСЬ.

Архив с примером реализации (файлы kml/kmz и файлы моделей в формате Google SketchUp) ЗДЕСЬ.


P.S.
Представленное в примере здание реально не существует!!! И выполнено просто для примера!!!
Если Вы хотите чтобы мы создали модель Вашего реально существующего здания используйте для связи тел. +79229024679 Роман или icq 173347184