18 апреля 2012 года была выпущена новая версия JavaScript API Яндекс.Карт 2.0.
Она имеет большое количество отличительных особенностей от предидущей версии, можно сказать, что это полноценный релиз практически нового продукта.
В нескольких заметках на блоге, я хочу рассказать Вам о том, как можно ее использовать в картографических проектах.
Основные отличительные особенности JavaScript API Яндекс.Карт версии 2.0:
— Новый дизайн (элементов управления, меток и панели пробок; возможность выбрать язык интерфейса);
— Высокая скорость загрузки (возможность модульной загрузки API);
— Новые инструменты (canvas, кластеризация, элементы HTML5 и CSS3);
— Поддержка мобильных устройств;
— Отсутствие API-ключа для привязки к домену
Подробную документацию по новой версии API Яндекс.Карт 2.0 можно прочитать здесь.
Теперь приведу пример создания простейшей карты с использованием API Яндекс.Карт 2.0.
Вот его код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Пример карты с использованием JavaScript API Яндекс.Карт 2.0</title> <!-- Подключаем API карт 2.x --> <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script> <script type="text/javascript"> // Как только будет загружен API и готов DOM, выполняем инициализацию ymaps.ready(init); function init () { // Создание экземпляра карты и его привязка к контейнеру с // заданным id ("map") var myMap = new ymaps.Map('map', { // При инициализации карты, обязательно нужно указать // ее центр и коэффициент масштабирования center: [56.326944, 44.0075], // Нижний Новгород zoom: 13 }); } </script> </head> <body> <div id="map" style="width:600px; height:400px"></div> </body> </html> |
Посмотреть работу примера в действии
В самом начале, мы подключаем API карт по адресу http://api-maps.yandex.ru/2.0/
И передаем набор необходимых параметров для подключения:
— lang — язык (обязательный параметр);
— key — API-ключ (не обязательно);
— load — пакеты, которые необходимо загрузить. По умолчанию принимает значение package.full;
— mode — режим работы с API. По умолчанию release (код обфусцирован, ошибки API не генерируются);
— coordorder — порядок координат. По умолчанию принимает значение latlong (широта, долгота);
— ns — пространство имен. По умолчанию ymaps.
В примере мы передаем только два параметра: load=package.full и lang=ru-RU.
API не включает в себя библиотеку jQuery.
Рассмотрим параметры более подробно.
Параметр lang — язык является обязательным и может принимать значения: ru-RU — русский и uk-UA — украинский, en-BR — английский и tr-TR — турецкий (только для карты Турции) .
Параметр load — загружаемые пакеты:
package.full — полная сборка API Яндекс.Карт;
package.standard — стандартная сборка API Яндекс.Карт;
package.map — базовая функциональность — карта, поведения карты, слои;
package.controls — элементы управления карты (кроме SearchControl и TrafficControl);
package.search — инструменты поиска по карте — провайдеры геокодирования и SearchControl;
package.geoObjects — геообъекты (точки, ломаные, многоугольники, круги, прямоугольники) на карте;
package.clusters — кластеризация;
package.traffic — пробки;
package.route — сервис маршрутизации;
package.geoXml — инструменты для работы с YMapsML, KML и GPX;
package.editor — редактор геообъектов
Состав пакетов можно посмотреть в документации
Параметр mode — режим работы с API.
mode=release — код обфусцирован, ошибки API не генерируются;
mode=debug — режим отслеживания ошибок
Параметр coordorder задает порядок координат:
coordorder= latlong — широта, долгота по умолчанию;
coordorder=longlat — долгота, широта
Параметр ns позволяет задавать свое пространство имен, по умолчанию ymaps.
Например, ns=ym
Тогда основная часть кода будет иметь вид:
<script type="text/javascript"> // Как только будет загружен API и готов DOM, выполняем инициализацию ym.ready(init); function init () { // Создание экземпляра карты и его привязка к контейнеру с // заданным id ("map") var myMap = new ym.Map('map', { // При инициализации карты, обязательно нужно указать // ее центр и коэффициент масштабирования center: [56.326944, 44.0075], // Нижний Новгород zoom: 13 }); } </script> |
При инициализации карты, указав дополнительный параметр type, мы можем задать тип нашей карты.
Параметр type может принимать следующие значения:
‘yandex#map’ — тип карты "схема" (по умолчанию);
‘yandex#satellite’ — тип карты "спутник";
‘yandex#hybrid’ — тип карты "гибрид";
‘yandex#publicMap’ — тип карты "народная карта";
‘yandex#publicMapHybrid’ — тип карты "народный гибрид".
Пример определения типа карты:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Пример определение типа карты с использованием JavaScript API Яндекс.Карт 2.0</title> <!-- Подключаем API карт 2.x --> <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script> <script type="text/javascript"> // Как только будет загружен API и готов DOM, выполняем инициализацию ymaps.ready(init); function init () { // Создание экземпляра карты и его привязка к контейнеру с // заданным id ("map") var myMap = new ymaps.Map('map', { // При инициализации карты, обязательно нужно указать // ее центр и коэффициент масштабирования center: [56.326944, 44.0075], // Нижний Новгород zoom: 13, // Тип карты type: "yandex#satellite" }); } </script> </head> <body> <div id="map" style="width:600px; height:400px"></div> </body> </html> |
Существует возможность задания поведения карты, используя параметр behaviors.
Задавая его значения, мы можем включать или отключать различные параметры поведения карты:
масштабирование карты двойным щелчком кнопки мыши;
перетаскивание карты с помощью мыши либо одиночного касания;
масштабирование карты при выделении области левой кнопкой мыши;
масштабирование карты мультисенсорным касанием;
масштабирование карты при выделении области правой кнопкой мыши;
измерение расстояния;
масштабирование карты колесом мыши.
Пример кода с включенной возможностью масштабирования колесиком мыши.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Включаем возможность масштабирования колесиком мыши - с использованием JavaScript API Яндекс.Карт 2.0</title> <!-- Подключаем API карт 2.x --> <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script> <script type="text/javascript"> // Как только будет загружен API и готов DOM, выполняем инициализацию ymaps.ready(init); function init () { // Создание экземпляра карты и его привязка к контейнеру с // заданным id ("map") var myMap = new ymaps.Map('map', { // При инициализации карты, обязательно нужно указать // ее центр и коэффициент масштабирования center: [56.326944, 44.0075], // Нижний Новгород zoom: 13, // Включаем возможность масштабирования колесиком мыши behaviors: ["scrollZoom"] }); } </script> </head> <body> <div id="map" style="width:600px; height:400px"></div> </body> </html> |
Возможно изменение параметров карты после ее создания.
Включаем возможность масштабирования колесиком мыши
myMap.behaviors.enable("scrollZoom");
Выключаем
myMap.behaviors.disable("scrollZoom");
Устанавливаем новый тип карты Народная
myMap.setType(‘yandex#publicMap’);
Устанавливаем новый центр карты
myMap.setCenter([50.45, 30.5 ], 12);
Добавляем элементы управления на карту
Давайте добавим на карту все возможные стандартные элементы управления.
Код примера:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Пример карты с элементами управления JavaScript API Яндекс.Карт 2.0</title> <!-- Подключаем API карт 2.x --> <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script> <script type="text/javascript"> // Как только будет загружен API и готов DOM, выполняем инициализацию ymaps.ready(init); function init () { // Создание экземпляра карты и его привязка к контейнеру с // заданным id ("map") var myMap = new ymaps.Map('map', { // При инициализации карты, обязательно нужно указать // ее центр и коэффициент масштабирования center: [56.326944, 44.0075], // Нижний Новгород zoom: 13 }); //Добавляем элементы управления myMap.controls // Кнопка изменения масштаба .add('zoomControl') // Список типов карты .add('typeSelector') // Кнопка изменения масштаба - компактный вариант // Расположим её справа .add('smallZoomControl', { right: 5, top: 75 }) // Стандартный набор кнопок .add('mapTools') //Линейка масштаба .add(new ymaps.control.ScaleLine()) //Обзорная карта, с заданным типом .add(new ymaps.control.MiniMap({ type: 'yandex#publicMap' })); } </script> </head> <body> <div id="map" style="width:600px; height:400px"></div> </body> </html> |
Элементы управления добавляются с помощью поля controls, ссылающегося на коллекцию элементов управления картой.
Добавление элемента в коллекцию производится с помощью метода add().
Мы можем позиционировать элементы управления, задавая параметры смещения в пикселях относительно верха (right), низа (bottom), левой (left) и правой (right) стороны окна с картой.
Загрузить архив с файлами примеров
На этом пока все.
Продолжение следует…
Как насчёт разработки и добавления собственных контролов?
Напишу чуть позже. Нужно с начала про обработку событий рассказать.
А иначе будет непонятно.
Здравствуйте!
Не получается с этими примерами. У Вас нет видео как делали? Может хостинг должен поддерживать карты 2.0? А может это только для Джумлы.
Я делал примеры из Начинаем изучать API Яндекс.Карт — там все получалось. Ваш код вставлял прямо на страничке ворд пресса. Там все получалось но балуны были сильно растянутые и кривые. Как устранить не нашел и полез в карты 2.0, а они вообще не ставятся. Вот пример: http://www.3bpr.ru/%D0%BC%D1%8B-%D0%BD%D0%B0-%D0%BA%D0%B0%D1%80%D1%82%D0%B5/ (метка чуть ниже и левей красноярска)
Это проблема со стилями в шаблоне WordPress. Нужно не использовать глобальные стили. Свои примеры я делал используя простую html-страницу без встраивания в конкретную CMS
а не дадите ссылку как делать с нуля сайт — не ворд. пресс. Как у Вас обычный хмл
Еще раз здравствуйте!
Решил проблему через вставку конструктором. Там код немного другой, но Вам все равно большое СПС.
Конструктор http://api.yandex.ru/maps/tools/constructor/
Автору большое спасибо за статью.
Спасибо, помогло в начинаниях!