Начинаем изучать язык YMapsML для Яндекс.Карт

Автор: | 01.05.2009

Также как у API карт Google (язык – KML) для описания географических данных на картах Яндекса  используется специальный язык YMapsML (Yandex Maps Markup Language).

YMapsML – это XML язык с помощью которого возможно в текстовом виде задать участок карты с нанесенными метками и другими объектами, а затем отобразить его в браузере средствами JS API Яндекс.Карт.

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

В качестве геометрических объектов можно использовать метку или линию.

Можно задавать стиль отображения объектов и границы области показа.

Давайте для начала рассмотрим простейший пример файла на языке YMapsML и как вывести его содержимое с использованием API Яндекс.Карт.

Привожу код файла примера:

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

<ymaps xmlns=»http://maps.yandex.ru/ymaps/1.x» xmlns:gml=»http://www.opengis.net/gml» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xsi:schemaLocation=»http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd»>

<GeoObjectCollection>

<gml:name>Объекты карте</gml:name>

<gml:featureMembers>

<GeoObject>

<gml:name>Дворец спорта</gml:name>

<gml:description>Дворец спорта «Нагорный» просп. Гагарина, 29</gml:description>

<gml:Point>

<gml:pos>43.979459 56.291908</gml:pos>

</gml:Point>

</GeoObject>

</gml:featureMembers>

</GeoObjectCollection>

</ymaps>

В этом примере:

В первой строке задается формат файла XML версии 1.0 и его кодировка utf-8.

Далее идет корневой элемент файла ymaps:ymaps. В его атрибутах описываются пространства имен XML и используемые XSD-схемы.

Элемент  ymaps:ymaps может содержать в себе несколько тегов, служащих контейнерами для различных данных или групп данных, отображаемых на карте.

Это repr:Repsentation – который содержит в себе правила отображения геообъектов на карте (в нашем примере отсутствует).

И контейнер GeoObjectCollection – содержит в себе описания объектов, помещаемых на карту.

Элемент gml:featureMembers – содержит в себе описание отдельного геообъекта или группы.

В нашем случае это простой элемент метка.

О имеет имя — name Дворец спорта, описание – description Дворец спорта «Нагорный» просп. Гагарина, 29.

Координаты метки задаются следующим кодом:

<gml:Point>

<gml:pos>43.979459 56.291908</gml:pos>

</gml:Point>

Для визуализации данного файла в наш пример вывода Яндекс.Карты (см.первый код в заметке «Добавляем маркер на карту используя API Яндекс.Карт«) необходимо добавить несколько строк в функцию init.

var ml = new YMaps.YMapsML( ‘https://webmap-blog.ru/examples/YMapsML/prim_YMapsML_1.xml’ );

map.addOverlay(ml);

YMaps.Events.observe(ml, ml.Events.Fault, function (error) {

alert(‘Ошибка: ‘ + error);

});

В первой строке мы присваиваем переменной ml путь к файлу с нашим примером prim_YMapsML_1.xml.

И затем добавляем его на нашу карту.

Последние три строки служат для контроля ошибок, возникающих при загрузке YMapsML-документа.

Загружаем пример в браузере и наблюдаем результат.

Отображаем файйл YMapsML с использованием API Яндекс.Карт

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

Далее я продолжу описания работы с языком YMapsML

Более подробную информацию Вы можете найти в документации на странице по адресу http://api.yandex.ru/maps/ymapsml/doc/ref/concepts/About.xml

Начинаем изучать язык YMapsML для Яндекс.Карт: 2 комментария

  1. ustus

    Добрый день. А подскажите, как сделать несколько объектов с name и description в одной метке, если, допустим, несколько объектов на карте имеет одни и тот же адрес и необходимо их отобразить в одном балуне?

  2. Роман

    Подскажи, плиз, каким EVENT отловить изменение границ карты? У меня карта находится в DHTMLX окне, которое пользователи могут менять в размерах. И точки у меня подгружаются только в видимую область карты по var bnd=mapba.getBounds(),crdl=bnd.getLeftBottom(),crdr=bnd.getRightTop();

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

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