Формат файлов KML и его использование на картах Google. Продолжение

Автор: | 06.05.2009

В этой заметке мы продолжаем изучать формат файлов KML начатый в заметке «Формат файлов KML и его использование на картах Google. Введение».

В этой заметке мы рассмотрим как можно задавать в файле KML несколько географических объектов и задавать стили для их отображения.

Давайте рассмотрим это на конкретном примере.

Привожу часть кода  KML-файла:

<?xml version=»1.0″ encoding=»UTF-8″?>

<kml xmlns=»http://www.opengis.net/kml/2.2″>

<Document>

<name>Кинотеатры Нижнего Новгорода</name>

<description>Местоположение кинотеатров Нижнего Новгорода на GoogleMaps</description>

<Style id=»kino_st»>

<IconStyle>

<scale>1.2</scale>

<Icon>

<href>http://maps.google.com/mapfiles/kml/pal2/icon30.png</href>

</Icon>

<hotSpot x=»0.5″ y=»0″ xunits=»fraction» yunits=»fraction»/>

</IconStyle>

<BalloonStyle>

<text>$[description]</text>

</BalloonStyle>

</Style>

<Placemark>

<name>Кинотеатр Импульс</name>

<description>

<![CDATA[

<div style=»text-align:center»><strong>Кинотеатр Импульс</strong><br /><a rel=»nofollow» href=»http://www.map.cek.ru/index.php?option=com_content&view=article&id=25&Itemid=136″ target=»blank»><img src=»http://www.map.cek.ru/images/stories/afisha/cinema/imp.jpg» alt=»Информация о кинотеатре Импульс с афишой фильмов» title=»Информация о кинотеатре Импульс с афишой фильмов» width=»100″ height=»62″ /></a><br />пр. Гагарина, 192</div>

]]>

</description>

<styleUrl>#kino_st</styleUrl>

<Point>

<altitudeMode>relativeToGround</altitudeMode>

<coordinates>43.959184,56.237457,0</coordinates>

</Point>

</Placemark>

…..

<Placemark>

<name>Кинотеатр Электрон</name>

<description>

<![CDATA[

<div style=»text-align:center»><strong>Кинотеатр Электрон</strong><br /><a rel=»nofollow» href=»http://www.map.cek.ru/index.php?option=com_content&view=article&id=31&Itemid=146″ target=»blank»><img src=»http://www.map.cek.ru/images/stories/afisha/cinema/elektron.jpg» alt=»Информация о кинотеатре Электрон с афишой фильмов» title=»Информация о кинотеатре Электрон с афишой фильмов» width=»100″ height=»62″ /></a><br />пр. Гагарина, 98</div>

]]>

</description>

<styleUrl>#kino_st</styleUrl>

<Point>

<altitudeMode>relativeToGround</altitudeMode>

<coordinates>43.978839,56.274389,0</coordinates>

</Point>

</Placemark>

</Document>

</kml>

Полный текст файла можно загрузить http://webmap-blog.ru/examples/kml/primer_kml_2.km.

Что же мы видим нового в этом примере?

Здесь появился новый тег <Document>.

Внутрь него помещается все содержимое kml-файла.

Затем мы указываем имя и описание создаваемого документа.

В файле kml возможно задание стилей для отображения элементов на карте.

Если мы определяем стиль в начале документа, тогда мы можем использовать его для последующих элементов.

В нашем примере мы определяем стиль с идентификатором  kino_st.

Внутри него мы задаем стиль для значка метки  IconStyle и для балуна BalloonStyle.

Параметр scale задает масштаб значка метки.

<Icon>  <href> — указывают на файл с изображением значка, в нашем случае icon30.png.

Параметр hotspot задает отступы от координат точки метки для изображнеия по х и по y.

Для стиля балуна мы указаваем, что это будет текст параметра description.

После задания стиля идет список меток на карте с параметрами.

В нашем примере это перечень кинотеатров Нижнего Новгорода.

Каждая метка заключена в парный тег <Placemark>.

Для которой задается название name, описание description, которое будет появлятся в балуне при щелчке по метке.

Стиль отображения и координаты точки.

Для написания HTML-кода внутри тега <description> его помещают внутрь тега CDATA.

Тег <altitudeMode> служит для задания наземного режима отображения.

В Google Earth 5.0 появилась возможность работы с новыми режимами – Окен и Космическое пространство.

Посмотреть работающий пример и исходный код можно здесь.

Подробнее о формате KML можно узнать по адресу http://code.google.com/intl/ru_ALL/apis/kml/documentation/

Продолжение следует …

Формат файлов KML и его использование на картах Google. Продолжение: 2 комментария

  1. sima

    очень полезная статья, спасибо за работу.
    есть вопрос:
    если мне надо на одну карту поместить ряд точек — например три кинотеатра, со своими иконками и 4 банкомата, тоже со своими, так, чтобы они отображались одновременно — соотвественно я делаю один KML файл с указанием всех этих точек.
    но необходимо также, чтобы пользователь мог каким-то образом переключиться так, чтобы на карте остались только кинотеатры, или только банкоматы. есть еще два KML файла, в одном из которых есть только банкоматы, а в другом только кинотеатры.
    как-то можно реализовать данную задачу?

  2. Vadim

    Здравствуйте.
    Ваш сайт очень информативный.
    Вопрос у меня к вам такой.
    Как создать файл kml что бы на карте отображалась какая нибудь надпись или цифра вместо маркера. Тоесть у меня есть много точек с заданными координатами но вместо маркера чтобы отображались разные надписи для каждой конкретной точки.
    Весь интернет уже перерыл.
    Я делаю карту используя Googl Maps API v3 для своего города. И в KML файле у меня полигоны для каждого дома и я хочу еще добавить чтобы рядом с домом отображался его номер.

    Может вы сталкивались с такой проблемой.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *