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/
Автору большое спасибо за статью.
Спасибо, помогло в начинаниях!