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

Автор: | 11.05.2009

В предыдущей заметке «Начинаем изучать язык YMapsML для Яндекс.Карт» мы начали с Вами изучать язык YMapsML для описания географических данных на картах Яндекса.

В этой заметке мы продолжим его изучение.

Узнаем, как описываются несколько объектов в одном файле, о использовании стилей и задания начальных параметров карты.

Давайте рассмотрим это на конкретном примере файла в формате  YMapsML (загрузить полный код файла).

Часть кода файла prim_YMapsML_2.xml

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

<ymaps xmlns=»http://maps.yandex.ru/ymaps/1.x» xmlns:gml=»http://www.opengis.net/gml»>

<Representation xmlns=»http://maps.yandex.ru/representation/1.x»>

<View>

<mapType>MAP</mapType>

<gml:boundedBy>

<gml:Envelope>

<gml:upperCorner>44.121546 56.372383</gml:upperCorner>

<gml:lowerCorner>43.799509 56.231518</gml:lowerCorner>

</gml:Envelope>

</gml:boundedBy>

</View>

<Style gml:id=»styleCinimaNN»>

<iconStyle>

<href>http://www.map.cek.ru/images/stories/kinoteatrs.jpg</href>

<size x=»20″ y=»20″></size>

<offset x=»-10″ y=»-10″></offset>

</iconStyle>

<balloonContentStyle>

<template>#balloonTemplate</template>

</balloonContentStyle>

</Style>

<Template gml:id=»balloonTemplate»>

<text>

<![CDATA[<div style=»text-align:center»><strong>$[name]</strong><br /><img src=»http:$[metaDataProperty.AnyMetaData.link]» alt=»» width=»100″ height=»62″/><br />$[description]</div>]]>

</text>

</Template>

</Representation>

<GeoObjectCollection>

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

<style>#styleCinimaNN</style>

<gml:featureMembers>

<GeoObject>

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

<gml:description>пр. Гагарина, 192</gml:description>

<gml:metaDataProperty>

<AnyMetaData>

<link>//www.map.cek.ru/images/stories/afisha/cinema/imp.jpg</link>

</AnyMetaData>

</gml:metaDataProperty>

<gml:Point>

<gml:pos>43.959184 56.237457</gml:pos>

</gml:Point>

</GeoObject><GeoObject>

<gml:name>Кинотеатр Канавинскийсий</gml:name>

<gml:description>ул. Фильченкова, 7</gml:description>

<gml:metaDataProperty>

<AnyMetaData>

<link>//www.map.cek.ru/images/stories/afisha/cinema/kanaviskiy.jpg</link>

</AnyMetaData>

</gml:metaDataProperty>

<gml:Point>

<gml:pos>43.944335 56.317977</gml:pos>

</gml:Point>

</GeoObject>

<GeoObject>

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

<gml:description>пр. Гагарина, 98</gml:description>

<gml:metaDataProperty>

<AnyMetaData>

<link>//www.map.cek.ru/images/stories/afisha/cinema/elektron.jpg</link>

</AnyMetaData>

</gml:metaDataProperty>

<gml:Point>

<gml:pos>43.978839 56.274389</gml:pos>

</gml:Point>

</GeoObject>

</gml:featureMembers>

</GeoObjectCollection>

</ymaps>

Если отобразить содержимое этого файла на Яндекс.Карте, мы увидим следующее

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

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

И так что же здесь интересного.

Первые две строки нам уже известны.

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

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

Элемент ymaps:ymaps содержит внутри себя два контейнера repr:Repsentation и GeoObjectCollection.

Первый  repr:Repsentation содержит в себе правила отображения геообъектов на карте – это элементы View (задает область показа геообъектов) и Style (содержит описание внешнего вида объектов), элемент Template – содержит шаблон для представления html-объектов карты.

Второй  GeoObjectCollection  служит для описания набора геообъектов.

Рассмотрим подробнее назначение и параметры каждого из элементов кода.

Элемент View включает в себя следующие теги:

mapType – задает тип карты, в нашем случае MAP обычная карта.

gml:boundedBy – задет границы области показа на карте, в нашем случае задается прямоугольная область с координатами нижнего левого угла gml:lowerCorner — 43.799509 56.231518 и правого верхнего угла gml:upperCorner — 44.121546 56.372383.

После этого задается стиль для отображения меток кинотеатров iconStyle и для содержимого балуна balloonContentStyle.

В контейнере Template задается шаблон для html-содержания балуна.

Далее в контейнере GeoObjectCollection описывается набор точек.

Задается его наименование gml:name и общий стиль для всех styleCinimaNN.

Каждая точка задается конкретными параметрами:

  • Наименование кинотеатра – name,
  • Описание – description,
  • Ссылка на картинку внутри балуна – link
  • Координаты точки – Point

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

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

  1. Сергей

    Давно интересует вопрос: можно ли по адресу (Город,улица,дом) получить координаты точки на карте где будет метка. Чтобы автоматизировать процесс расстановки меток(например скриптом)

  2. admin Автор записи

    Это возможно с использованием сервиса геокодирования.
    Геокодеру посылается HTTP-запрос по адресу http://geocode-maps.yandex.ru/1.x/? и указываются следующие два параметра: geocode — адрес объекта, который требуется геокодировать и key — API-ключ Яндекс.Карт.
    Ответ представляет подробное описание и координаты географического объекта.
    Пример ответа смотрите здесь http://api.yandex.ru/maps/geocoder/doc/desc/concepts/response_structure.xml.

  3. Rentony

    Здравствуйте, скажите, как можно работать с элементом metaDataProperty.AnyMetaData ?
    например вывести на страничку содержимое поля metaDataProperty.AnyMetaData.element

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

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