В этой заметке мы продолжаем изучать формат файлов 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>
Полный текст файла можно загрузить https://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/
Продолжение следует …
очень полезная статья, спасибо за работу.
есть вопрос:
если мне надо на одну карту поместить ряд точек — например три кинотеатра, со своими иконками и 4 банкомата, тоже со своими, так, чтобы они отображались одновременно — соотвественно я делаю один KML файл с указанием всех этих точек.
но необходимо также, чтобы пользователь мог каким-то образом переключиться так, чтобы на карте остались только кинотеатры, или только банкоматы. есть еще два KML файла, в одном из которых есть только банкоматы, а в другом только кинотеатры.
как-то можно реализовать данную задачу?
Здравствуйте.
Ваш сайт очень информативный.
Вопрос у меня к вам такой.
Как создать файл kml что бы на карте отображалась какая нибудь надпись или цифра вместо маркера. Тоесть у меня есть много точек с заданными координатами но вместо маркера чтобы отображались разные надписи для каждой конкретной точки.
Весь интернет уже перерыл.
Я делаю карту используя Googl Maps API v3 для своего города. И в KML файле у меня полигоны для каждого дома и я хочу еще добавить чтобы рядом с домом отображался его номер.
Может вы сталкивались с такой проблемой.