Многие интересуются как можно использовать API Яндекс.Карт для создания собственной карты?
В нескольких заметках на своем блоге я подробно рассмотрю данный вопрос.
Для создания собственной карты существует специальный класс YMaps.MapLayer, который предназначен для создания пользовательского слоя с картой.
В нем указывается источник данных для слоя карты с помощью класса YMaps.TileDataSource.
Конструктор данного класса принимает следующие параметры:
tileUrlTemplate - шаблон, по которому строится url тайла;
isTransparent - загружаемые тайлы прозрачны;
isPng - загружаемые изображения тайлов имеют png формат.
И так, в начале, необходимо подготовить данные для создания собственного слоя карты.
В качестве источника нужно использовать растровое изображение представленное в нескольких масштабах, каждое из которых разрезано на кусочки размером 256 на 256 пикселей.
Файлы с кусочками изображений необходимо переименовать соответствующим образом , например так tile-zum-num.jpg
Здесь zum – уровень масштаба, num – номер тайтла по порядку.
Покажу как можно встроить свое изображение в интерфейс управления Яндекс.Карт на конкретном примере.
В качестве изображения я использую фотографию автомобиля Porsche Cayenne размером 1600х1200 пикселей.
Для создания набора тайтлов воспользуемся бесплатным сервисом Gmap Uploader расположенном по адресу http://gmapuploader.com
Пользоваться данным сервисом очень легко.
На главной странице сервиса нужно ввести Ваш адрес электронной почты, выбрать файл для загрузки в формате jpg, png или gif и нажать на кнопку Send для начала загрузки файла.
Через некоторое время (продолжительность зависит от размера загружаемого изображения) появиться страница с загруженным изображением в интерфейсе Google Maps.
И три ссылки внизу изображения.
Для моего примера они имеют следующий вид:
Link: http://gmapuploader.com/view/bsnYw5ReKw
Full Screen: http://gmapuploader.com/iframe/bsnYw5ReKw
Deep Zoom URL: http://dz.gmapuploader.com/bsnYw5ReKw.xml
Первая ссылка – адрес данной страницы, вторая на изображение карты во весь экран и третья на xml-файл с описание максимального уровня масштабирования.
В моем случае содержимое данного файла:
<Image TileSize="256" Overlap="0" Format="jpg"><Size Width="2048" Height="2048" />
</Image>
Для использования созданный тайтлов нам необходимо узнать адрес папки, где они хранятся.
Сделать это просто, нужно посмотреть свойства одного из фрагментов полученного изображения (Свойства рисунка) , например в моем случае http://mt2.gmapuploader.com/tiles/bsnYw5ReKw/tile-3-26.jpg
Нам сразу ясно что все файлы хранятся в папке по адресу http://mt2.gmapuploader.com/tiles/bsnYw5ReKw/
Теперь необходимо написать код для загрузки набора тайтлов в интерфейс Яндекс.Карт.
Привожу код примера:
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>Примеры YMapsML. Своя карта с использованием сервиса Gmap Uploader.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://api-maps.yandex.ru/1.0/index.xml?key=AIW0o0kBAAAAkwyUMwMAEkDz8ddCkU0UnlyLEu4ddFBXhQQAAAAAAAAAAAA1Md4ULCo5QbciEo5T26eV1lhuEQ==" type="text/javascript"></script>
<script type="text/javascript">
var map;
function init () {
map = new YMaps.Map(document.getElementById("YMapsID"));
map.setCenter(new YMaps.GeoPoint(0,0),1);
map.enableScrollZoom();
map.addControl(new YMaps.SmallZoom());
var myData = new YMaps.TileDataSource("http://mt0.gmapuploader.com/tiles/bsnYw5ReKw/", false, false);
myData.getTileUrl = function (tile, zoom) {
return this.getTileUrlTemplate() + "tile-" + zoom + "-" + (tile.y * Math.pow(2, zoom) + tile.x) + ".jpg";
}
map.addCopyright('Угольников Сергей');
map.setType(new YMaps.MapType([new YMaps.MapLayer(myData)], 'Пример карты', {minZoom:1, maxZoom:3}));
}
</script>
</head>
<body onload="init();">
<div id="YMapsID" style="height:100%; width:100%;"></div>
</body>
</html>
Поясню, на что здесь следует обратить внимание.
Строкой map.setCenter(new YMaps.GeoPoint(0,0),1); задается центр карты на первом уровне масштаба.
Строка var myData = new YMaps.TileDataSource("http://mt0.gmapuploader.com/tiles/bsnYw5ReKw/", false, false); - служит для задания источника тайтлов и значения параметров isTransparent = false - загружаемые тайлы не прозрачны, isPng= false - загружаемые изображения тайлов не имеют формат png.
В строке myData.getTileUrl = function (tile, zoom) {return this.getTileUrlTemplate() + "tile-" + zoom + "-" + (tile.y * Math.pow(2, zoom) + tile.x) + ".jpg";
}
Мы задаем правила для формирования имени файла для конкретного тайтла на соответствующем уровне масштаба.
Строкой map.addCopyright('Угольников Сергей'); добавляем копирайт на нашу карту.
И строка map.setType(new YMaps.MapType([new YMaps.MapLayer(myData)], 'Пример карты', {minZoom:1, maxZoom:3})); служит для указания нового типа карты с названием Пример карты, тамже мы вводим ограничение на изменение уровня масштаба от 1 до 3.
Загружаем пример в браузере и наблюдаем результат
Посмотреть пример в действии можно здесь.
Изучаем создание интерактивных карт используя API Google Maps и API Яндекс.Карт
воскресенье, 24 мая 2009 г.
понедельник, 18 мая 2009 г.
Онлайн сервис для конвертирования gpx-треков в YMapsML
Если у Вас имеется GPS-навигатор, то возможно сохранять путевые треки в формате GPX.
GPX (GPS eXchange Format) — это текстовый формат хранения и обмена данными GPS, являющийся подмножеством XML.
Формат позволяет хранить информацию об ориентирах (waypoints), маршрутах (routes) и треках (tracklogs). Для каждой точки хранятся её долгота, широта и высота над уровнем моря (если имеется информация о высоте). Для точек трека хранится также время прохождения точки. XML-схема предусматривает также хранение произвольной пользовательской информации по каждой точке.
Я хочу познакомить Вас с одним онлайн сервисом для конвертирования gpx-треков в YMapsML и отображения на Яндекс.Картах.
Сервис расположен по адресу http://map.z66.ru/gpx2ymaps/
Использовать его очень просто.
Вы выбираете gpx-файл на своем компьютере для его загрузки (максимальный размер файла 300 кб).
Нажимаете на кнопку загрузить.
После этого отображается Яндекс.Карта с загруженным треком.
Дополнительные возможности сервиса: вы можете получить ссылку на страницу Яндекс.Карта с загруженным треком для последующего использования (разместить ссылку в своем блоге или послать по e-mail), сохранить исходный gpx-трек, сохранить сформированный YMapsML-файл для работы с ним.
Ссылка на пример http://map.z66.ru/gpx2ymaps/view/d816d1634d0e88db3ef155c58fcaf607
Загрузить сформированный YMapsML-файл здесь
GPX (GPS eXchange Format) — это текстовый формат хранения и обмена данными GPS, являющийся подмножеством XML.
Формат позволяет хранить информацию об ориентирах (waypoints), маршрутах (routes) и треках (tracklogs). Для каждой точки хранятся её долгота, широта и высота над уровнем моря (если имеется информация о высоте). Для точек трека хранится также время прохождения точки. XML-схема предусматривает также хранение произвольной пользовательской информации по каждой точке.
Я хочу познакомить Вас с одним онлайн сервисом для конвертирования gpx-треков в YMapsML и отображения на Яндекс.Картах.
Сервис расположен по адресу http://map.z66.ru/gpx2ymaps/
Использовать его очень просто.
Вы выбираете gpx-файл на своем компьютере для его загрузки (максимальный размер файла 300 кб).
Нажимаете на кнопку загрузить.
После этого отображается Яндекс.Карта с загруженным треком.
Дополнительные возможности сервиса: вы можете получить ссылку на страницу Яндекс.Карта с загруженным треком для последующего использования (разместить ссылку в своем блоге или послать по e-mail), сохранить исходный gpx-трек, сохранить сформированный YMapsML-файл для работы с ним.
Ссылка на пример http://map.z66.ru/gpx2ymaps/view/d816d1634d0e88db3ef155c58fcaf607
Загрузить сформированный YMapsML-файл здесь
понедельник, 11 мая 2009 г.
Продолжаем изучать язык YMapsML для Яндекс.Карт
В предыдущей заметке «Начинаем изучать язык 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>
Если отобразить содержимое этого файла на Яндекс.Карте, мы увидим следующее
Посмотреть работающий пример и исходный код можно здесь.
И так что же здесь интересного.
Первые две строки нам уже известны.
В них задается формат файла 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.
Каждая точка задается конкретными параметрами:
Продолжение следует …
В этой заметке мы продолжим его изучение.
Узнаем, как описываются несколько объектов в одном файле, о использовании стилей и задания начальных параметров карты.
Давайте рассмотрим это на конкретном примере файла в формате 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
Продолжение следует …
четверг, 7 мая 2009 г.
Формат файлов KML и его использование на картах Google. Продолжение
В этой заметке мы продолжаем изучать формат файлов 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 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 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 несколько географических объектов и задавать стили для их отображения.
Давайте рассмотрим это на конкретном примере.
Привожу часть кода 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 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 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/
Продолжение следует …
пятница, 1 мая 2009 г.
Начинаем изучать язык YMapsML для Яндекс.Карт
Также как у 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( 'http://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
Более подробную информацию Вы можете найти в документации на странице по адресу http://api.yandex.ru/maps/ymapsml/doc/ref/concepts/About.xml
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( 'http://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
Более подробную информацию Вы можете найти в документации на странице по адресу http://api.yandex.ru/maps/ymapsml/doc/ref/concepts/About.xml
Подписаться на:
Сообщения (Atom)