/** * @fileOverview * Реализация функций загрузки модулей API. */ var YMaps = {}; (function (YMaps) { var Internal = {"fullVersion":"17248506","counterShare":false,"loadByRequire":false,"token":"14d0771de79b19a339219dd683eb569f","userKey":"AJJmhksBAAAAhGJpVwIA3TmzJcJuQx3I_8MgmVtavjknnKcAAAAAAAAAAAD4RfRwTaywoZCmUSAHxkrXv7_Icw==","versionPath":"https://yastatic.net/s3/front-maps-static/maps-front-jsapi-v1-0/17248506/out/src/client/","mapTiles":"https://core-renderer-tiles.maps.yandex.net/tiles?l=map&v=25.11.27-0~b:251128144200~ib:25.11.28-0&%c&lang=ru_RU","satTiles":"https://sat0%d.maps.yandex.net/tiles?l=sat&v=3.1977.0&%c&lang=ru_RU","sklTiles":"https://core-renderer-tiles.maps.yandex.net/tiles?l=skl&v=25.11.27-0~b:251128144200~ib:25.11.28-0&%c&lang=ru_RU","coverageService":"https://api-maps.yandex.ru/services/coverage/","geoxmlService":"https://api-maps.yandex.ru/services/geoxml/","searchService":"https://api-maps.yandex.ru/services/search/","printerApi":"https://static-maps.yandex.ru/","statCounter":"https://yandex.ru/clck/","mapsUrl":"https://yandex.ru/maps/"}; var doc = document; var head = doc.getElementsByTagName('head')[0]; var useDocumentWrite; var callbacks = []; var state; // Добавляем включение VML для IE doc.write(''); /** * @ignore * Функция загрузки модулей API Яндекс.Карт. * @name YMaps.load * @memberOf YMaps * @param {Function} [callback] Функция-обработчик события успешной загрузки модуля. * @function * @static */ YMaps.load = function (callback) { // Если модуль уже загружен, callback вызывается немедленно. if (state === 'ready') { if (callback) { callback(); } return; } // Запоминаем callback if (callback) { callbacks.push(callback); } // Ставим в очередь if (!state) { state = 'loading'; var userAgent = navigator.userAgent.toLowerCase(); var isIE = userAgent.indexOf('msie') !== -1 && userAgent.indexOf('opera') === -1; // Флаг, указывающий на необходимость подключения CSS-стилей для IE 6-7 и IE 8 в режиме 7 var useIECss = isIE && !(doc.documentMode >= 8); var prefix = Internal.versionPath + '_YMaps'; var suffix = '?v=' + Internal.fullVersion; loadCss(prefix + (useIECss ? '-ie' : '') + '.css' + suffix); loadJs(prefix + '.js' + suffix); } }; /** * @ignore * Обработчик успешной загрузки модуля либо данных о модуле. * @name YMaps.onLoad * @memberOf YMaps * @param {Function} maker Функция инициализации модуля. Как только все необходимые * для подключения модули будут готовы, будет выполнена функция инициализации. Функция * получает три параметра: нэймспейсы YMaps и Internal и опции. Если грузятся данные о * модуле, maker выставляется в null * @function * @static */ YMaps.onLoad = function (maker) { maker(YMaps, Internal); state = 'ready'; while (callbacks.length) { callbacks.shift()(); } }; /** * @ignore * Подключает скрипты модуля. * @param {String} script Имя файла. */ function loadJs(script) { // Если модули подключаются вместе с API, то используется document.write, // поскольку только так можно гарантировать синхронную загрузку модулей. // На это указывает флаг useDocumentWrite if (!useDocumentWrite) { var tag = doc.createElement('script'); tag.charset = 'utf-8'; tag.src = script; head.insertBefore(tag, head.firstChild); } else { doc.write(''); } } /** * @ignore * Аналогично loadJs, только грузит css-ки. */ function loadCss (css) { if (!useDocumentWrite) { var link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = css; head.insertBefore(link, head.firstChild); } else { doc.write(''); } } if (!Internal.loadByRequire) { useDocumentWrite = 1; YMaps.load(); useDocumentWrite = 0; } })(YMaps);