Модульная система
Загрузка модулей при подключении API
Загрузка модулей по требованию
API Яндекс Карт разработан с использованием концепции модульности.
В качестве модулей выступают отдельные именованные сущности, например классы, статические объекты, функции. Список всех модулей API приведен в справочнике.
Загрузка модулей при подключении API
Загружаемые модули задаются HTTP-параметром load
в строке подключения API. Можно указать сразу несколько модулей, разделив их запятым. По умолчанию параметр load
принимает значение package.full
, то есть загружаются все основные модули, необходимые для работы API.
<script src="https://api-maps.yandex.ru/2.1/?apikey=ваш API-ключ&lang=ru_RU&load=Map,Placemark" type="text/javascript"></script>
Загруженные модули будут включены в публичное пространство имен ymaps
.
Если для работы заданных модулей требуются другие модули, то они будут загружены автоматически.
В песочнице продемонстрирован пример загрузки модулей через параметр load
.
Загрузка модулей по требованию
Функция modules.require позволяет загружать модули по требованию:
if (!ymaps.Map) {
ymaps.modules.require(['Map', 'Placemark'], function (Map, Placemark) {
// Нужно вручную добавить класс в пространство имен ymaps,
// так как при использовании метода require()
// этого не происходит.
ymaps.Map = Map;
var map = new ymaps.Map('map', {
center: [55.76, 37.64],
zoom: 10
});
// Класс Placemark не добавлен в публичную область видимости.
var placemark = new Placemark([55.55, 37.00]);
map.geoObjects.add(placemark);
});
}
Поскольку для работы загруженных модулей может потребоваться загрузка других модулей, функция modules.require
поддерживает работу в асинхронном режиме. Когда данные, необходимые для работы указанных модулей, будут подготовлены, она вызовет callback-функцию с загруженными модулями.
Пример загрузки модулей по требованию приведен в песочнице.
Подключение аддонов
Отображение балуна и хинта геообъекта осуществляется с помощью полей balloon
и hint
класса GeoObject. Для инициализации этих полей необходимо подключить модули geoObject.addon.balloon и geoObject.addon.hint. Если требуется открыть балун или хинт, принадлежащие карте, необходимо подключить соответственно модули map.addon.balloon и map.addon.hint.
Если необходима возможность редактирования геометрии геообъекта, следует подключить geoObject.addon.editor.
Пример подключения аддонов можно посмотреть в песочнице.
Создание собственных модулей
С помощью модульной системы API можно создавать собственные программные модули. Это бывает полезно при написании крупных приложений, базирующихся на API Яндекс Карт.
Декларация модуля производится с помощью метода modules.define. Пример декларации и использования собственного модуля можно посмотреть в песочнице.
Декларация модулей может быть совершена до вызова обработчика ymaps.ready.
После того как модуль задекларирован в модульной системе, его можно использовать в приложении.
Примечание
Пользовательские модули не добавляются автоматически в общее пространство имен с модулями API. Доступ к объявленному модулю можно получить через асинхронный метод modules.require, который вернет объект-promise.
ymaps.modules.require(['PlacemarkButton'])
.spread(function (PlacemarkButton) {
myMap.controls.add(new PlacemarkButton('Кликните, чтобы добавить метку'));
});