В этой заметке мы продолжим его изучение.
Узнаем, как описываются несколько объектов в одном файле, о использовании стилей и задания начальных параметров карты.
Давайте рассмотрим это на конкретном примере файла в формате 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>
Если отобразить содержимое этого файла на Яндекс.Карте, мы увидим следующее
Посмотреть работающий пример и исходный код можно здесь.
И так что же здесь интересного.
Первые две строки нам уже известны.
В них задается формат файла 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
Продолжение следует …
Давно интересует вопрос: можно ли по адресу (Город,улица,дом) получить координаты точки на карте где будет метка. Чтобы автоматизировать процесс расстановки меток(например скриптом)
ОтветитьУдалитьЭто возможно с использованием сервиса геокодирования.
ОтветитьУдалитьГеокодеру посылается HTTP-запрос по адресу http://geocode-maps.yandex.ru/1.x/? и указываются следующие два параметра: geocode - адрес объекта, который требуется геокодировать и key - API-ключ Яндекс.Карт.
Ответ представляет подробное описание и координаты географического объекта.
Пример ответа смотрите здесь http://api.yandex.ru/maps/geocoder/doc/desc/concepts/response_structure.xml.