Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Этот модуль оценен как бета-версия и готов к широкому использованию. Он все еще новый, и его следует использовать с некоторой осторожностью, чтобы гарантировать ожидаемые результаты. |
В англоязычной Википедии этот модуль вызывается , см. Документацию по этому шаблону для инструкций по использованию.{{Maplink}}
Применение
- Стандартное использование
- Просто используйте {{ Maplink }}, который передает свои параметры в основную функцию этого модуля .
- Из другого модуля
- Импортируйте этот модуль, например
local mf = require('Module:Mapframe')
- Передайте таблицу имен / значений параметров функции _main . См. Документацию {{ Maplink }} для получения информации об именах и описаниях параметров. Например
local mapframe = mf._main(parameters)
- Предварительно обработайте вывод _main перед его возвратом, например
return frame:preprocess(mapframe)
- Импортируйте этот модуль, например
Настроить на другой вики
- Создайте шаблон и модуль:
- Импортируйте этот модуль и его шаблон в эту вики (или скопируйте код, указав авторство в сводке редактирования). При желании дайте им имя, которое имеет смысл на языке этой вики.
- В Викиданных добавьте их к элементам Q52554979 и Q27882107.
- Локализуйте модуль
- Отредактируйте верхние биты модуля между комментариями
-- ##### Localisation (L10n) settings #####
и-- #### End of L10n settings ####
, заменив значения между"
"
символами локальными значениями (при необходимости)
- Отредактируйте верхние биты модуля между комментариями
- Добавить документацию
- в шаблон (например, путем перевода Template: Maplink / doc , корректировки по мере необходимости в соответствии с любыми локализациями, сделанными на предыдущем шаге)
- в модуль (пожалуйста, переведите / переведите эти инструкции, чтобы википедия, читающая вашу вики, но не английскую Википедию, также могла установить модуль и шаблон на другой вики).
- Примечание. Первоначально написано в английской Википедии по адресу https://en.wikipedia.org/wiki/Module:Mapframe.- [[---------------------------------------------- ------------------------------ ##### Настройки локализации (L10n) ##### Замените значения в кавычках ("") локализованными значениями-------------------------------------------------- --------------------------]] -местный L10n = {}- Modue зависимостилокальный трансклюдер - локальная копия https://www.mediawiki.org/wiki/Module:Transcluder загружается лениво- "Module: No globals" не следует использовать, по крайней мере, до тех пор, пока все другие модули, которым требуется этот модуль, не будут использовать глобальные объекты.- Имена параметров шаблона (только для ненумерованных версий)- Укажите каждую в виде отдельной строки или таблицы строк (псевдонимов)- Псевдонимы проверяются слева направо, т.е. `{" one "," two "}` эквивалентно использованию `{{{one | {{{two |}}}}}} `в шаблонеL10n . para = {display = "дисплей" ,type = "тип" ,id = { "id" , "ids" },from = "из" ,raw = "сырой" ,title = "название" ,description = "description" ,strokeColor = { "цвет обводки" , "цвет обводки" },strokeWidth = "ширина обводки" ,strokeOpacity = "непрозрачность обводки" ,fill = "заливка" ,fillOpacity = "непрозрачность заливки" ,Coord = "координата" ,marker = "маркер" ,markerColor = { "цвет-маркера" , "цвет-маркера" },markerSize = "размер маркера" ,radius = { "radius" , "radius_m" },radiusKm = "radius_km" ,radiusFt = "radius_ft" ,radiusMi = "radius_mi" ,Edge = "края" ,text = "текст" ,icon = "значок" ,zoom = "масштабирование" ,frame = "кадр" ,равнина = "равнина" ,frameWidth = "ширина кадра" ,frameHeight = "высота кадра" ,frameCoordinates = { "координаты кадра" , " координаты кадра" },frameLatitude = { " широта кадра" , "широта кадра" },frameLongitude = { "frame-long" , "frame-longitude" },frameAlign = "выравнивание кадра" ,switch = "переключатель" ,overlay = "наложение" ,overlayBorder = "граница наложения" ,overlayHorizontalAlignment = "выравнивание по горизонтали наложения" ,overlayVerticalAlignment = "вертикальное выравнивание оверлея" ,overlayHorizontalOffset = "смещение по горизонтали наложения" ,overlayVerticalOffset = "вертикальное смещение наложения"}- Имена других шаблонов, из которых этот модуль может извлекать координатыL10n . template = {Координаты = { - шаблон координат, а также шаблоны с выходными данными, содержащими {{координаты}}«Координаты» , «Координаты / песочница» ,«Строка NRHP» , «Строка / песочница NRHP» ,"WikidataCoord" , "WikidataCoord / sandbox" , "WikidataCoord" , "Wikidata corrective"}}-- Сообщения об ошибкахL10n . error = {badDisplayPara = «Недопустимый параметр отображения» ,noCoords = "Координаты должны быть указаны в Викиданных или в |" .. ( введите ( L10n . пара . координаты ) == 'таблица' и L10n . para . координаты [ 1 ] или L10n . пара . координаты ) .. "=" ,wikidataCoords = "Координаты не найдены в Викиданных" ,noCircleCoords = "Координаты центра круга должны быть указаны или доступны через Викиданные" ,<name> negativeRadius> = "Радиус круга должен быть положительным числом" ,noRadius = "Необходимо указать радиус окружности" ,<negativeEdges> = "Края круга должны быть положительным числом" ,noSwitchPara = "Найдено только одно значение переключателя в |" .. ( тип ( L10n . Пункт . Переключатель ) == 'стол' и L10n . Пункт . Переключатель [ 1 ] или L10n . Пункт . Переключатель ) .. "=" ,oneSwitchLabel = "Найден только один ярлык в |" .. ( тип ( L10n . Пункт . Переключатель ) == 'стол' и L10n . Пункт . Переключатель [ 1 ] или L10n . Пункт . Переключатель ) .. "=" ,noSwitchLists = "По крайней мере, один параметр должен иметь SWITCH: list" ,switchMismatches = "Все SWITCH: списки должны иметь одинаковое количество значений" , - Жетоны «% s» и «% d» будут заменены строками и числами при использованииoneSwitchValue = "Найдено только одно значение переключателя в |% s =" ,lesserSwitchLabels = "Найдено% d значений переключателя, но только% d меток в |" .. ( тип ( L10n . Пункт . Переключатель ) == 'стол' и L10n . Пункт . Переключатель [ 1 ] или L10n . Пункт . Переключатель ) .. "=" ,noNamedCoords = "В% s не найдены именованные координаты"}- Прочие струныL10n . str = {- допустимые значения для параметра отображения, например (| display = inline) или (| display = title) или (| display = inline, title) или (| display = title, inline)inline = "встроенный" ,title = "название" ,dsep = "," , - разделитель между строкой и заголовком (запятая в примере выше)- допустимые значения для параметра типаline = "line" , - геолинии (например, дорога)shape = "shape" , - объект геоформ (например, штат или провинция)shapeInverse = "shape-inverse" , - объект геомаски (обратный геофигуре)data = "data" , - страница данных geoJSON в Commonspoint = "point" , - одноточечный объект (координаты)circle = "circle" , - круговая область вокруг точкиnamed = "named" , - все названные координаты в статье или разделе- Ключевое слово для обозначения списка переключателей. НЕ ДОЛЖНЫ использовать специальные символы ^ $ ()%. [] * + -?переключатель = "ПЕРЕКЛЮЧАТЕЛЬ" ,- допустимые значения для параметров значка, рамки и простогоaffirmedWords = '' .. table.concat ({"добавить" ,"добавлено" ,"подтвердить" ,"подтверждено" ,"включить" ,"включен" ,"на" ,"правда" ,"да" ,"у"}, '' ) .. '' ,decinedWords = '' .. table.concat ({"упадок" ,"отклонено" ,"исключить" ,"исключено" ,"ложь" ,"нет" ,"не" ,"нет" ,"п" ,"выкл" ,"опустить" ,"опущено" ,"удалить" ,"удаленный"}, '' ) .. ''}- Значения по умолчанию для параметровL10n . defaults = {дисплей = L10n . ул . встроенный ,text = "Карта" ,frameWidth = "300" ,frameHeight = "200" ,frameAlign = "право" ,markerColor = "5E74F3" ,markerSize = ноль ,strokeColor = "# ff0000" ,strokeWidth = 6 ,Edge = 32 , - количество ребер, используемых для аппроксимации кругаoverlayBorder = "сплошной белый 1px" ,overlayHorizontalAlignment = "право" ,overlayHorizontalOffset = "0" ,overlayVerticalAlignment = "дно" ,overlayVerticalOffset = "0"}- #### Конец настроек L10n ####- [[---------------------------------------------- ------------------------------ Полезные методы-------------------------------------------------- --------------------------]] -local util = {}- [[Ищет значение параметра на основе идентификатора (ключ из таблицы L10n.para) инеобязательно суффикс для параметров, которые могут иметь суффикс (например, type2 - это типс суффиксом 2).@param {table} args пары "ключ-значение" с именами параметров и их значениями@param {строка} param_id id для имени параметра (ключ из таблицы L10n.para)@param {строка} [суффикс] суффикс для имени параметра@returns {string | nil} значение параметра, если найдено, или nil, если не найдено]] -функция утилит . getParameterValue ( аргументы , param_id , суффикс )суффикс = суффикс или ''если type ( L10n . para [ param_id ] ) ~ = 'table', товернуть аргументы [ L10n . para [ param_id ] .. суффикс ]конецдля _i , paramAlias в ipairs ( L10n . para [ param_id ]) сделатьесли args [ paramAlias .. суффикс ], товернуть аргументы [ paramAlias .. суффикс ]конецконецвернуть нольконец- [[Обрезать пробелы в аргументах и удалить пустые аргументы. Также исправьте управляющие символы.@param {таблица} argsTable@returns {table} обрезанная таблица аргументов]] -функция утилит . trimArgs ( argsTable )local cleanArgs = {}для ключа , вал в паре ( argsTable ) делатьесли type ( val ) == 'string', тоval = val : match ( '^% s * (.-)% s * $' )если val ~ = '' то- управляющие символы внутри json должны быть экранированы, но удалить их проще- См. Также T214984- Однако * не * удаляйте управляющие символы из викитекста, иначе вы сломаете маркеры полосы.cleanArgs [ ключ ] = ( не Util . matchesParam ( 'текст' , ключ )) и вал : GSUB ( '% с' , '' ) или ValконецещеcleanArgs [ ключ ] = valконецконецвернуть cleanArgsконец- [[Проверьте, соответствует ли имя параметра нелокализованному ключу параметра@param {строка} ключ - нелокализованное имя параметра для поиска@param {строка} name - локализованное имя параметра для проверки@param {string | nil} - необязательный суффикс, применяемый к значениям из ключа локализации.@returns {boolean} истина, если имя соответствует параметру, иначе ложь]] -функция утилит . matchParam ( ключ , имя , суффикс )локальный параметр = L10n . пара [ ключ ]суффикс = суффикс или ''если type ( param ) == 'table', тодля _ , v в парах ( пары ) делатьесли ( v .. суффикс ) == имя, то верните истину конецконецвернуть ложьконецreturn (( параметр .. суффикс ) == имя )конец- [[Проверить, подтверждено ли значение (одно из значений в L10n.str.affirmedWords)@param {строка} val Проверяемое значение@returns {boolean} истина, если подтверждена, иначе ложь]] -функция утилит . isAffirmed ( val )если не ( вал ) , то вернуть ложный конецвернуться string.find ( l10n . ул . affirmedWords , '' .. Вэл .. '' , 1 , истинный ) и истинный или ЛОЖЬконец- [[Проверить, отклонено ли значение (одно из значений в L10n.str.declinedWords)@param {строка} val Проверяемое значение@returns {boolean} true, если отклонено, иначе false]] -функция утилит . isDeclined ( val )если не ( вал ) , то вернуть ложный конецвернуться string.find ( l10n . ул . declinedWords , '' .. Вэл .. '' , 1 , истинный ) и истинный или ЛОЖЬконец- [[Проверить, соответствует ли имя шаблона известным шаблонам координат или оболочкам(в L10n.template.coord). При проверке имя нормализуется, поэтому, например, именаВсе "Coord", "Coord" и "Coord" возвращают значение true.@param {строка} имя@returns {boolean} истина, если это шаблон или оболочка координат, иначе ложь]] -функция утилит . isCoordTemplateOrWrapper ( имя )имя = мв . текст . обрезать ( имя )локальный inputTitle = mw . название . новый ( имя , 'Шаблон' )если не inputTitle, товернуть ложьконец- Создание (или повторное использование) объектов mw.title для каждого известного шаблона / оболочки координат.- Сохраняются в L10n.template.title, поэтому их не нужно воссоздавать- каждый раз, когда эта функция вызываетсяесли не L10n . шаблон . названия тогдаL10n . шаблон . title = {}для _ , v в парах ( L10n . шаблон . коорд ) делатьtable.insert ( L10n . шаблон . заголовки , mw . title . new ( v , 'Шаблон' ))конецконецдля _ , templateTitle в парах ( L10n . шаблон . названий ) делатьесли мв . название . равно ( inputTitle , templateTitle ), затемвернуть истинуконецконецвернуть ложьконец- [[Рекурсивно извлекайте шаблоны координат, у которых есть параметр имени.@param {строка} вики-текст@returns {table} последовательность таблиц шаблонов координат]] -функция утилит . extractCoordTemplates ( викитекст )локальный выход = {}локальные шаблоны = mw . ustring . gmatch ( wikitext , '{% b {}}' )локальные подшаблоны = {}для шаблона в шаблонах делаемлокальное templateName = mw . ustring . совпадение ( шаблон , '{{([^} |] +)' )локальное имяParam = mw . ustring . совпадение ( шаблон , "|% s * имя% s * =% s * [^} |] +" )если утилит . isCoordTemplateOrWrapper ( templateName ), затемесли nameParam, то table.insert ( output , template ) endelseif mw . ustring . find ( mw . ustring . sub ( template , 2 ), "{{" ), затемлокальная subOutput = Util . extractCoordTemplates ( mw . ustring . sub ( шаблон , 2 ))для _ , т в парах ( subOutput ) делатьtable.insert ( вывод , t )конецконецконец- убедитесь, что в координатах не используется отображение заголовкадля к , v в парах ( выход ) делаютвыход [ k ] = mw . ustring . gsub ( v , "|% s * display% s * = [^ |}] +" , "| display = inline" )конецвозвратный выводконец- [[Получает все именованные координаты со страницы или раздела страницы.@param {string | nil} page Имя страницы или name # section, чтобы получить именованные координаты из. Если имя не указано, то есть #section или nil или пустая строка, тогда будет использоваться текущая страница.@ возвращает {таблицу} последовательность таблиц {координаты, название, описание}, где координаты координаты в формате, подходящем для # util.parseCoords, имя - строка, а описание - строка (координаты в формате, подходящем для отображения читателю). Если по какой-то причине имя не может быть найдено, описание равно нулю, а имя содержит координаты формата отображения.@throws {L10n.error.noNamedCoords}, если именованные координаты не найдены.]] -функция утилит . getNamedCoords ( страница )если transcluder == nil, то- лениво загружать [[Module: Transcluder]], поэтому он включается только на страницах,- фактически использовать именованные координатыtranscluder = require ( "Модуль: Transcluder" )конецместные части = mw . текст . разделить ( страница или "" , "#" , истина )local name = parts [ 1 ] == "" и mw . название . getCurrentTitle (). prefixedText или части [ 1 ]локальный раздел = части [ 2 ]локальная pageWikitext = transcluder . получить ( раздел и имя .. "#" .. раздел или имя )местное coordTemplates = Util . extractCoordTemplates ( pageWikitext )если # correTemplates == 0, то ошибка ( string.format ( L10n . error . noNamedCoords , page или name ), 0 ) endлокальный кадр = mw . getCurrentFrame ()local sep = "________"локальная expandedContent = кадр : предобработки ( table.concat ( coordTemplates , сентябрь ))локальные расширенные шаблоны = mw . текст . сплит ( расширенное содержимое , сеп )местный namedCoords = {}для _ , расширенный шаблон в парах ( расширенные шаблоны ) сделатьместная координата = mw . ustring . совпадение ( расширенный шаблон , "<span class = \" geo% -dec \ " .-> (.-) </span>" )если скоординировано томестное имя = (- имя, указанное шаблоном оболочки, например [[Article | Name]]мв . ustring . совпадение ( расширенный шаблон , "<span class = \" mapframe% -coord% -name \ " > (.-) </span>" ) или- имя передано в шаблон координатмв . ustring . совпадение ( расширенный шаблон , "<span class = \" fn org \ " > (.-) </span>" ) или- по умолчанию координаты, если имя не может быть полученосогласовывать)местное описание = имя ~ = координаты и координатыместная координата = mw . ustring . gsub ( координаты , «[°]» , «_» )table.insert ( namedCoords , { Coord = координаты , name = name , description = description })конецконецif # namedCoords == 0, то ошибка ( string.format ( L10n . error . noNamedCoords , page или name ), 0 ) endвернуть namedCoordsконец- [[Анализируйте значения координат из параметров, переданных в URL-адресе GeoHack (например,//tools.wmflabs.org/geohack/geohack.php?pagename=Example¶ms=1_2_N_3_4_W_ или//tools.wmflabs.org/geohack/geohack.php?pagename=Example¶ms=1.23_S_4.56_E_)или строка без URL в том же формате (например, `1_2_N_3_4_W_` или` 1.23_S_4.56_E_`)@param {строка} coords строка, содержащая координаты@returns {number, number} широта, долгота]] -функция утилит . parseCoords ( координаты )местные координатыесли мв . ustring . find ( coords , "params =" , 1 , true ) затем- предотвратить ложные совпадения из имени страницы, например? pagename = Lorem_S._IpsumcoordsPatt = 'params = ([_%.% d] + [NS] [_%.% d] + [EW]) »еще- на самом деле это не адрес геохака, просто тот же форматcoordsPatt = '[_%.% d] + [NS] [_%.% d] + [EW]'конецместные части = mw . текст . split (( mw . ustring . match ( coords , coordsPatt ) или '' ), '_' )локальная lat_d = ToNumber ( части [ 1 ])local lat_m = tonumber ( parts [ 2 ]) - ноль, если координаты в десятичном форматеlocal lat_s = lat_m and tonumber ( parts [ 3 ]) - ноль, если координаты либо в десятичном формате, либо только в градусах и минутахместный lat = lat_d + ( lat_m или 0 ) / 60 + ( lat_s или 0 ) / 3600если части [ # parts / 2 ] == 'S', тоширота = широта * - 1конецлокальная long_d = ToNumber ( части [ 1 + # части / 2 ])local long_m = tonumber ( parts [ 2 + # parts / 2 ]) - ноль, если координаты в десятичном форматеlocal long_s = long_m и tonumber ( parts [ 3 + # parts / 2 ]) - ноль, если координаты либо в десятичном формате, либо только в градусах и минутахлокальный long = long_d + ( long_m или 0 ) / 60 + ( long_s или 0 ) / 3600если parts [ # parts ] == 'W', тодлинный = длинный * - 1конецвернуть широту , долготуконец- [[Получить координаты из элемента Викиданных@param {строка} item_id Идентификатор элемента Викиданных (число Q)@returns {number, number} широта, долгота@throws {L10n.error.noCoords}, если item_id недействителен или элемент не существует@throws {L10n.error.wikidataCoords}, если элемент не имеет P625 оператор (координаты), либо ему присвоено значение «нет значения»]] -функция утилит . wikidataCoords ( item_id )если нет ( item_id и mw . wikibase . isValidEntityId ( item_id ) и mw . wikibase . entityExists ( item_id )), тоошибка ( L10n . error . noCoords , 0 )конецместные координаты = mw . викибаза . getBestStatements ( идентификатор_элемента , 'P625' )если не coordStatements или # coordStatements == 0 , тоошибка ( L10n . error . wikidataCoords , 0 )конецlocal hasNoValue = ( CoordStatements [ 1 ]. mainsnak и ( CoordStatements [ 1 ]. mainsnak . snaktype == 'novalue' или CoordStatements [ 1 ]. mainsnak . snaktype == 'somevalue' ) )если hasNoValue, тоошибка ( L10n . error . wikidataCoords , 0 )конецlocal wdCoords = CoordStatements [ 1 ] [ 'mainsnak' ] [ 'значение данных' ] [ 'значение' ]Возвращение ToNumber ( wdCoords [ 'широта' ]), ToNumber ( wdCoords [ 'долгота' ])конец- [[Создает многоугольник, напоминающий круг@param {number} широта, широта@param {number} долгота Долгота@param {number} radius Радиус в метрах@param {number} n Количество ребер многоугольника@returns {table} последовательность таблиц {широта, долгота}, где широта и долгота - это числа]] -функция утилит . circleToPolygon ( lat , long , radius , n ) - n - количество ребер- На основе https://github.com/gabzim/circle-to-polygon, лицензия ISCлокальная функция смещения ( CLAT , CLON , расстояние , подшипник )местный lat1 = math.rad ( cLat )локальный lon1 = math.rad ( cLon )local dByR = distance / 6378137 - расстояние, деленное на 6378137 (радиус земли) wgs84местный лат = math.asin (math.sin ( lat1 ) * math.cos ( dByR ) +math.cos ( lat1 ) * math.sin ( dByR ) * math.cos ( пеленг ))локальный lon = lon1 + math.atan2 (math.sin ( подшипник ) * math.sin ( dByR ) * math.cos ( lat1 ),math.cos ( dByR ) - math.sin ( лат1 ) * math.sin ( лат ))Возвращение { math.deg ( долгота ), math.deg ( лат )}конецместные координаты = {};локальный i = 0 ;пока я < п делаюtable.insert ( координаты ,Смещение ( лат , длинные , радиус , ( 2 * math.pi * я * - 1 ) / п ))я = я + 1конецtable.insert ( координаты , смещение ( латы , длинный , радиус , 0 ))вернуть координатыконец- [[Получите количество пар ключ-значение в таблице, которое может не быть последовательностью.@param {table} т@returns {number} количество пар "ключ-значение"]] -функция утилит . tableCount ( т )местный счетчик = 0для k , v в парах ( t ) делаемcount = count + 1конец счетчик возвратаконец- [[Для таблицы, в которой значениями являются все таблицы, возвращает либо util.tableCountвложенных таблиц, если они все одинаковы, или ноль, если они не все одинаковы.@param {table} т@returns {number | nil} количество пар ключ-значение подтаблицы или ноль, если подтаблицы иметь разные подсчеты]] -функция утилит . subTablesCount ( t )местный счетчик = нольдля k , v в парах ( t ) делаемесли count == nil, тоcount = util . tableCount ( v )elseif count ~ = util . tableCount ( v ), затемвернуть нольконецконец счетчик возвратаконец- [[Разбивает список на последовательность таблиц. Элементы в списке могут быть разделенызапятыми, или точкой с запятой (если элементы могут содержать запятые), или "###" (если элементыможет содержать точки с запятой).@param {строка} listString@returns {table} последовательность элементов списка]] -функция утилит . tableFromList ( listString )если type ( listString ) ~ = "string" или listString == "", то вернуть nil endлокальный разделитель = ( mw . ustring . find ( listString , "###" , 0 , true ) и "###" ) или( mw . ustring . find ( listString , ";" , 0 , true ) и ";" ) или ","локальный шаблон = "% s *" .. разделитель .. "% s *"вернуть мв . текст . split ( listString , шаблон )конец- Логическое значение во внешней области видимости, указывающее, должен ли Картограф иметь возможность- автоматически рассчитывать координаты (см. phab: T227402)local coordsDerivedFromFeatures = false ;- [[---------------------------------------------- ------------------------------ Методы Make: они принимают таблицу аргументов и возвращают либо строку или таблица, которая будет использоваться в конечном результате.-------------------------------------------------- --------------------------]] -local make = {}- [[Заставляет контент помещаться внутри тега maplink или mapframe.@param {таблица} аргументы@returns {string} содержание тега]] -функция сделать . контент ( аргументы )если утилит . getParameterValue ( args , 'raw' ), затемcoordsDerivedFromFeatures = true - Картограф должен иметь возможность автоматически вычислять координаты из необработанного geoJSONвернуть утилит . getParameterValue ( аргументы , 'сырые' )конецместное содержание = {} local argsExpanded = {} для k , v в парах ( args ) делаемлокальный индекс = string.match ( k , '^ [^ 0-9] + ([0-9] *) $' )если index ~ = nil, томестный indexNumber = ''если index ~ = '', тоindexNumber = ToNumber ( индекс )ещеindexNumber = 1конецесли argsExpanded [ indexNumber ] == nil, тогдаargsExpanded [ indexNumber ] = {}конецargsExpanded [ indexNumber ] [ string.gsub ( k , index , '' ) ] = vконец конецдля contentIndex , contentArgs в парах ( argsExpanded ) делаетlocal argType = util . getParameterValue ( contentArgs , «тип» )- Картограф автоматически вычисляет координаты, если используются геолинии / формы (T227402)если не coordsDerivedFromFeatures, тоcoordsDerivedFromFeatures = ( argType == L10n . str . line или argType == L10n . str . shape ) и true или falseконецесли argType == L10n . ул . названный тогдалокальный namedCoords = util . getNamedCoords ( Util . getParameterValue ( contentArgs , "от" ))local typeKey = type ( L10n . para . type ) == "таблица" и L10n . пункт . типа [ 1 ] или L10n . пункт . типместная координатаKey = тип ( L10n . параграф . координата ) == "таблица" и L10n . пункт . координаты [ 1 ] или L10n . пункт . согласовыватьlocal titleKey = type ( L10n . para . title ) == "таблица" и L10n . пункт . title [ 1 ] или L10n . пункт . заглавиеlocal descKey = type ( L10n . para . description ) == "table" и L10n . пункт . описание [ 1 ] или L10n . пункт . описаниедля _ , namedCoord в парах ( namedCoords ) docontentArgs [ typeKey ] = "точка"contentArgs [ CoordKey ] = namedCoord . согласовыватьcontentArgs [ titleKey ] = namedCoord . названиеcontentArgs [ descKey ] = namedCoord . описаниеконтент [ # content + 1 ] = make . contentJson ( contentArgs )конецещеконтент [ # content + 1 ] = make . contentJson ( contentArgs )конецконец--Один элемент, массив не требуетсяесли # content == 1, то вернуть контент [ 1 ] end- Несколько элементов помещаются в коллекцию FeatureCollectionlocal contentArray = '[ \ n ' .. table.concat ( content , ', \ n ' ) .. ' \ n ]'вернуть contentArrayконец- [[Сделайте координаты из аргумента координаты или аргумента идентификатора или текущей страницыЭлемент Викиданных.@param {таблица} аргументы@param {логический} [plainOutput]@returns {Mixed} Либо: {число, число} широта, долгота, если plainOutput истинно; или же {table} последовательность таблицы долготы, затем широты (дает требуемый формат для GeoJSON при кодировании)]] -функция сделать . координаты ( аргументы , plainOutput )местные Coords , латы , длинныелокальный кадр = mw . getCurrentFrame ()если утилит . getParameterValue ( аргументы , 'координата' ), затемCoords = кадр : предобработки ( Util . getParameterValue ( арг , 'коорд' ) )лат , длинный = Util . parseCoords ( координаты )ещелат , длинный = Util . wikidataCoords ( Util . getParameterValue ( арг , 'ID' ) или MW . wikibase . getEntityIdForCurrentPage ())конецесли plainOutput, товернуть широту , долготуконецreturn {[ 0 ] = long , [ 1 ] = lat }конец- [[Создает таблицу координат, которая приближается к окружности.@param {таблица} аргументы@returns {table} последовательность таблиц {широта, долгота}, где широта и долгота - это числа@throws {L10n.error.noCircleCoords}, если координаты центра не указаны@throws {L10n.error.noRadius}, если радиус не указан@throws {L10n.error.negativeRadius}, если радиус отрицательный или равен нулю@throws {L10n.error.negativeEdges}, если края отрицательные или нулевые]] -функция сделать . circleCoords ( аргументы )местный лат , долгий = сделать . координаты ( аргументы , истина )локальный радиус = утилит . getParameterValue ( аргументы , 'радиус' )если не радиус, торадиус = утилит . getParameterValue ( args , 'radiusKm' ) и tonumber ( util . getParameterValue ( args , 'radiusKm' )) * 1000если не радиус, торадиус = утилит . getParameterValue ( args , 'radiusMi' ) и tonumber ( util . getParameterValue ( args , 'radiusMi' )) * 1609.344если не радиус, торадиус = утилит . getParameterValue ( args , 'radiusFt' ) и tonumber ( util . getParameterValue ( args , 'radiusFt' )) * 0,3048конецконецконецлокальные ребра = утилит . getParameterValue ( аргументы , 'края' ) или L10n . по умолчанию . краяесли не широта или не долго, тоошибка ( L10n . error . noCircleCoords , 0 )иначе, если не радиус, тоошибка ( L10n . error . noRadius , 0 )ElseIf ToNumber ( радиус ) <= 0 , тоошибка ( L10n . error . negativeRadius , 0 )ElseIf ToNumber ( ребра ) <= 0 , тоошибка ( L10n . error . negativeEdges , 0 )конецвернуть утилит . circleToPolygon ( лат , длинные , радиус , ToNumber ( ребра ))конец- [[Создает данные JSON для функции@param contentArgs аргументы для этой функции. Ключи должны быть версией без суффикса. имен параметров, т.е. используйте тип, обводку, заливку, ... вместо type3, stroke3, fill3, ...@returns {string} данные в кодировке JSON]] -функция сделать . contentJson ( contentArgs )локальные данные = {}если утилит . getParameterValue ( contentArgs , 'тип' ) == L10n . ул . точка или утилит . getParameterValue ( contentArgs , 'тип' ) == L10n . ул . круг тогдаlocal isCircle = util . getParameterValue ( contentArgs , 'тип' ) == L10n . ул . кругданные . type = "Feature"данные . geometry = {type = isCircle и "LineString" или "Point" ,координаты = isCircle и сделать . circleCoords ( contentArgs ) или make . координаты ( contentArgs )}данные . properties = {title = util . getParameterValue ( contentArgs , 'title' ) или mw . getCurrentFrame (): getParent (): getTitle ()}если isCircle, то- ЗАДАЧА: это очень похоже на то, что показано ниже, должно быть извлечено в функциюданные . свойства . ход = утилит . getParameterValue ( contentArgs , 'strokeColor' ) или L10n . по умолчанию . strokeColorданные . properties [ "stroke-width" ] = tonumber ( util . getParameterValue ( contentArgs , 'strokeWidth' )) или L10n . по умолчанию . strokeWidthlocal strokeOpacity = util . getParameterValue ( contentArgs , 'strokeOpacity' )если strokeOpacity, тоданные . properties [ 'stroke-opacity' ] = tonumber ( strokeOpacity )конецlocal fill = util . getParameterValue ( contentArgs , 'заполнить' )если заполнить тоданные . свойства . fill = заливкалокальная fillOpacity = Util . getParameterValue ( contentArgs , 'fillOpacity' )данные . properties [ 'fill-opacity' ] = fillOpacity и tonumber ( fillOpacity ) или 0,6конециначе - это точкаlocal markerSymbol = util . getParameterValue ( contentArgs , 'маркер' ) или L10n . по умолчанию . маркер- разрешить явное указание пустого поля для переопределения информационных ящиков или других шаблонов со значением по умолчаниюесли markerSymbol ~ = "blank", тоданные . properties [ "marker-symbol" ] = markerSymbolконецданные . properties [ "маркер-цвет" ] = утилит . getParameterValue ( contentArgs , 'markerColor' ) или L10n . по умолчанию . markerColorданные . properties [ "marker-size" ] = util . getParameterValue ( contentArgs , 'markerSize' ) или L10n . по умолчанию . markerSizeконецещеданные . type = "ExternalData"если утилит . getParameterValue ( contentArgs , 'тип' ) == L10n . ул . data или утилит . getParameterValue ( contentArgs , 'from' ), затемданные . service = "page"elseif util . getParameterValue ( contentArgs , 'тип' ) == L10n . ул . линия тогдаданные . service = "геолайн"elseif util . getParameterValue ( contentArgs , 'тип' ) == L10n . ул . форма тогдаданные . service = "geoshape"elseif util . getParameterValue ( contentArgs , 'тип' ) == L10n . ул . shapeInverse тогдаданные . service = "геомаска"конецесли утилит . getParameterValue ( contentArgs , 'id' ) или ( not ( util . getParameterValue ( contentArgs , 'from' )) и mw . wikibase . getEntityIdForCurrentPage ()), тогдаданные . ids = util . getParameterValue ( contentArgs , 'id' ) или mw . викибаза . getEntityIdForCurrentPage ()ещеданные . title = util . getParameterValue ( contentArgs , 'от' )конецданные . properties = {ход = утилит . getParameterValue ( contentArgs , 'strokeColor' ) или L10n . по умолчанию . strokeColor ,[ "Штрих-ширина" ] = ToNumber ( Util . GetParameterValue ( contentArgs , 'strokeWidth' )) или L10n . по умолчанию . strokeWidth}local strokeOpacity = util . getParameterValue ( contentArgs , 'strokeOpacity' )если strokeOpacity, тоданные . properties [ 'stroke-opacity' ] = tonumber ( strokeOpacity )конецlocal fill = util . getParameterValue ( contentArgs , 'заполнить' )если заполнить и ( data . service == "geoshape" или data . service == "geomask" ), тоданные . свойства . fill = заливкалокальная fillOpacity = Util . getParameterValue ( contentArgs , 'fillOpacity' )если fillOpacity, тоданные . Свойства [ 'заполняющих непрозрачности' ] = ToNumber ( fillOpacity )конецконецконецданные . свойства . title = util . getParameterValue ( contentArgs , 'title' ) или mw . название . getCurrentTitle (). текстесли утилит . getParameterValue ( contentArgs , 'description' ), затемданные . свойства . description = util . getParameterValue ( contentArgs , 'описание' )конецвернуть мв . текст . jsonEncode ( данные )конец- [[Создает атрибуты для maplink или тега mapframe.@param {таблица} аргументы@param {boolean} [isTitle] Тег должен отображаться в заголовке страницы, а не чем встроенный@returns {table <string, string>} пары "ключ-значение" имен атрибутов и значений]] -функция сделать . tagAttribs ( аргументы , isTitle )местные атрибуты = {}если утилит . getParameterValue ( args , 'zoom' ), затематрибуты . zoom = util . getParameterValue ( аргументы , 'масштабирование' )конецесли утилит . isDeclined ( util . getParameterValue ( args , 'icon' )), затематрибуты . class = "no-icon"конецесли утилит . getParameterValue ( аргументы , 'тип' ) == L10n . ул . point, а не coordsDerivedFromFeatures, тогдаместный лат , долгий = сделать . координаты ( аргументы , 'plainOutput' )атрибуты . широта = ToString ( лат )атрибуты . longitude = tostring ( длинный )конецесли утилит . isAffirmed ( util . getParameterValue ( args , 'frame' )), а не ( isTitle ), тогдаатрибуты . ширина = утилит . getParameterValue ( args , 'frameWidth' ) или L10n . по умолчанию . frameWidthатрибуты . высота = утилит . getParameterValue ( args , 'frameHeight' ) или L10n . по умолчанию . frameHeightесли утилит . getParameterValue ( args , 'frameCoordinates' ), затемлокальный frameLat , frameLong = util . parseCoords ( Util . getParameterValue ( арг , 'frameCoordinates' ))атрибуты . широта = frameLatатрибуты . долгота = frameLongещеесли утилит . getParameterValue ( args , 'frameLatitude' ), затематрибуты . широта = утилит . getParameterValue ( аргументы , 'frameLatitude' )конецесли утилит . getParameterValue ( args , 'frameLongitude' ), затематрибуты . долгота = утилит . getParameterValue ( аргументы , 'frameLongitude' )конецконецесли не атрибуты . широта, а не атрибуты . долготы и не coordsDerivedFromFeatures толокальный успех , lat , long = pcall ( util . wikidataCoords , util . getParameterValue ( args , 'id' ) или mw . wikibase . getEntityIdForCurrentPage ())если успех, тоатрибуты . широта = ToString ( лат )атрибуты . longitude = tostring ( длинный )конецконецесли утилит . getParameterValue ( args , 'frameAlign' ), затематрибуты . align = util . getParameterValue ( аргументы , 'frameAlign' )конецесли утилит . isAffirmed ( util . getParameterValue ( args , 'plain' )), затематрибуты . frameless = "1"ещеатрибуты . текст = утилит . getParameterValue ( аргументы , 'текст' ) или L10n . по умолчанию . текстконецещеатрибуты . текст = утилит . getParameterValue ( аргументы , 'текст' ) или L10n . по умолчанию . текстконецвернуть атрибутыконец- [[Создает вики-текст maplink, который будет расположен в правом верхнем углу заголовкастраница (там же, где расположены координаты с | display = title).@param {таблица} аргументы@param {string} tagContent Контент для тега maplink@returns {строка}]] -функция сделать . titleOutput ( аргументы , tagContent )местный titleTag = mw . текст . tag ( 'maplink' , make . tagAttribs ( аргументы , истина ), tagContent )local spanAttribs = {style = "font-size: small;" ,id = "координаты"}вернуть мв . текст . тег ( 'диапазон' , spanAttribs , titleTag )конец- [[Создает вики-текст maplink или mapframe, который будет встроен в строку.@param {таблица} аргументы@param {string} tagContent Контент для тега maplink@returns {строка}]] -функция сделать . inlineOutput ( аргументы , tagContent )local tagName = 'maplink'если утилит . getParameterValue ( args , 'frame' ), затемtagName = 'mapframe'конецвернуть мв . текст . тег ( tagName , make . tagAttribs ( аргументы ), tagContent )конец- [[Делает HTML, необходимый для работы swicther, включая шаблоны стилейтег.@param {table} таблица параметров последовательность таблиц {map, label} @param {string} params {}. map Wikitext для карты mapframe @param {string} params {}. label Текст ярлыка для опции swictherпараметры @param {table} @param {строка} options.alignment "влево", "по центру" или "вправо" @param {boolean} options.isThumbnail Отображение миниатюры @param {строка} options.width Ширина кадра, например, "200" @param {строка} [options.caption] Викитекст заголовка для миниатюры@retruns {строка} swicther HTML]] -функция сделать . SwitcherHtml ( параметры , параметры )options = options или {}локальный кадр = mw . getCurrentFrame ()local styles = frame : extensionTag {name = "templatestyles" ,args = { src = "Шаблон: Maplink / styles-multi.css" }}локальный контейнер = mw . html . создать ( "div" ): addClass ( "переключатель-контейнер" ): addClass ( "мультиконтейнер карты" )если варианты . alignment == "влево" или варианты . alignment == "right", затемконтейнер : addClass ( "float" .. options . alignment )else - выравнивание по центруконтейнер : addClass ( "центр" )конецдля i = 1 , # params doконтейнер: tag ( "div" ): wikitext ( params [ i ]. map ): tag ( "диапазон" ): addClass ( "переключатель-метка" ): css ( "дисплей" , "нет" ): wikitext ( mw . text . trim ( params [ i ]. label ))конецесли не варианты . isThumbnail тогдавернуть стили .. tostring ( контейнер )конецlocal classlist = container : getAttr ( "класс" )classlist = mw . ustring . gsub ( список классов , "% a *" .. параметры . выравнивание , "" )контейнер : attr ( "класс" , список классов )локальный externalCountainer = mw . html . создать ( "div" ): addClass ( "mapframe-multi-external-container" ): addClass ( " мв -картограф-контейнер" ): addClass ( "большой палец" )если варианты . alignment == "влево" или варианты . alignment == "right", затемexternalCountainer : addClass ( "т" .. параметры . выравнивание )else - выравнивание по центрувнешний: addClass ( "tnone" ): addClass ( "центр" )конецвнешний: tag ( "div" ): addClass ( "thumbinner" ): css ( "ширина" , параметры . ширина .. "пикс" ): узел ( контейнер ): node ( options . caption и mw . html . create ( "div" ): addClass ( "thumbcaption" ): wikitext ( параметры . подпись ))вернуть стили .. tostring ( outerCountainer )конец- [[Делает HTML, необходимый для работы наложенной картытег.@param {string} wikitext overlayMap для наложенной карты@param {string} wikitext baseMap для базовой карты@param {table} задает различные параметры стиля / отображения @param {строка} options.align "влево", "по центру" или "вправо" @param {string | number} options.width Ширина базовой карты, например, "300" @param {строка | число} options.width Высота базовой карты, например, "200" @param {string} options.border Стиль границы наложенной карты, например "сплошной белый 1px" @param {string} options.horizontalAlignment Выравнивание по горизонтали для наложения карты "влево" или "вправо" @param {string | number} options.horizontalOffset Горизонтальное смещение в пикселях от края выравнивания, например "10" @param {string} options.verticalAlignment Вертикальное выравнивание для наложенной карты: «сверху» или «снизу» @param {string | number} options.verticalOffset Вертикальное смещение в пикселях от края выравнивания, например, "10" @param {boolean} options.isThumbnail Отображение миниатюры @param {строка} [options.caption] Викитекст заголовка для миниатюры@retruns {строка} HTML для базовой карты с наложением]] -функция сделать . overlayHtml ( overlayMap , baseMap , параметры )options = options или {}local containerFloatClass = "float" .. ( параметры . выровнять или "нет" )если варианты . выровняйте == "центр", затемcontainerFloatClass = "центр"конецlocal containerStyle = {position = "относительный" ,ширина = параметры . ширина .. "пикс" ,высота = параметры . высота .. "пикс" ,overflow = "hidden" - мобильный телефон / minerva имеет тенденцию добавлять полосы прокрутки на пару пикселей}если варианты . выровняйте == "центр", затемcontainerStyle [ "margin-left" ] = "авто"containerStyle [ "margin-right" ] = "авто"конецлокальный контейнер = mw . html . создать ( "div" ): addClass ( "mapframe-withOverlay-container" ): addClass ( containerFloatClass ): addClass ( "размер нет" ): css ( containerStyle )local overlayStyle = {position = "absolute" ,[ "z-index" ] = "1" ,граница = параметры . граница или "сплошной белый 1px"}если варианты . horizontalAlignment == "right", затемoverlayStyle . справа = варианты . horizontalOffset .. "px"ещеoverlayStyle . left = варианты . horizontalOffset .. "px"конецесли варианты . verticalAlignment == "bottom", затемoverlayStyle . внизу = варианты . verticalOffset .. "px"ещеoverlayStyle . top = варианты . verticalOffset .. "px"конецлокальный overlayDiv = mw . html . создать ( "div" ): css ( overlayStyle ): wikitext ( overlayMap )контейнер: узел ( overlayDiv ): wikitext ( baseMap )если не варианты . isThumbnail тогдавозврат в строку ( контейнер )конецlocal classlist = container : getAttr ( "класс" )classlist = mw . ustring . gsub ( список классов , "% a *" .. параметры . выровнять , "" )контейнер : attr ( "класс" , список классов )локальный externalCountainer = mw . html . создать ( "div" ): addClass ( "mapframe-withOverlay-outerContainer" ): addClass ( " мв -картограф-контейнер" ): addClass ( "большой палец" )если варианты . align == "left" или параметры . align == "right", затемouterCountainer : addClass ( "t" .. options . align )else - выравнивание по центрувнешний: addClass ( "tnone" ): addClass ( "центр" )конецвнешний: tag ( "div" ): addClass ( "thumbinner" ): css ( "ширина" , параметры . ширина .. "пикс" ): узел ( контейнер ): node ( options . caption и mw . html . create ( "div" ): addClass ( "thumbcaption" ): wikitext ( параметры . подпись ))вернуться в строку ( outerCountainer )конец- [[---------------------------------------------- ------------------------------ Пакет для экспорта, т.е. методы, которые будут доступны для шаблонов и другие модули.-------------------------------------------------- --------------------------]] -местный p = {}- Точка входа для шаблоновфункция p . основной ( фрейм )локальный родитель = фрейм . getParent ( кадр )- Проверьте вариант наложениялокальный оверлей = утилит . getParameterValue ( родитель . арг , 'наложение' )local hasOverlay = overlay и mw . текст . обрезать ( наложение ) ~ = ""- Проверьте вариант переключателялокальный переключатель = утилит . getParameterValue ( родитель . арг , 'переключатель' )local isMulti = переключатель и mw . текст . trim ( переключатель ) ~ = ""- Создавайте выходные данные, выбирая метод, соответствующий параметрамлокальный выходесли hasOverlay, тоoutput = p . withOverlay ( родитель . арг )elseif isMulti тогдаoutput = p . мульти ( родитель . арг )ещеoutput = p . _Главная ( родитель . арг )конец- Предварительно обработать вывод перед его возвратомвозвратный кадр : препроцесс ( вывод )конец- Точки входа для модулейфункция p . _main ( _args )локальные аргументы = утилит . trimArgs ( _args )локальный tagContent = make . контент ( аргументы )локальный дисплей = mw . текст . split ( util . getParameterValue ( args , 'display' ) или L10n . defaults . display , '% s *' .. L10n . str . dsep .. '% s *' )локальный displayInTitle = display [ 1 ] == L10n . ул . заголовок или дисплей [ 2 ] == L10n . ул . заглавиелокальный дисплейInline = дисплей [ 1 ] == L10n . ул . inline или display [ 2 ] == L10n . ул . в соответствиилокальный выходесли displayInTitle и displayInline, товывод = сделать . titleOutput ( args , tagContent ) .. make . inlineOutput ( аргументы , tagContent )elseif displayInTitle тогдавывод = сделать . titleOutput ( аргументы , tagContent )elseif displayInline тогдавывод = сделать . inlineOutput ( аргументы , tagContent )ещеошибка ( L10n . error . badDisplayPara )конецвозвратный выводконецфункция p . мульти ( _args )локальные аргументы = утилит . trimArgs ( _args )если не аргументы [ L10n . пункт . переключатель ], затем ошибка ( L10n . error . noSwitchPara , 0 ) конецлокальный switchParamValue = util . getParameterValue ( аргументы , 'переключатель' )local switchLabels = util . tableFromList ( switchParamValue )если # switchLabels == 1, то ошибка ( L10n . error . oneSwitchLabel , 0 ) endlocal mapframeArgs = {}local switchParams = {}для имени , val в парах ( args ) делать- Скопируйте в mapframeArgs, если не метки переключателя или параметр переключателяесли val ~ = switchParamValue, а не string.match ( val , "^" .. L10n . str . switch .. ":" ), тоmapframeArgs [ имя ] = Valконец- Проверьте, нужно ли переключать этот параметр. Если да, сохраните имя и переключите- значения в таблице switchParams.local switchList = string.match ( val , "^" .. L10n . str . switch .. ": (. +)" )если switchList ~ = nil, томестные значения = утилит . tableFromList ( список переключателей )если # значений == 1, тоerror ( string.format ( L10n . error . oneSwitchValue , name ), 0 )конецswitchParams [ имя ] = значенияконецконецесли утилит . tableCount ( switchParams ) == 0, затемошибка ( L10n . error . noSwitchLists , 0 )конецлокальный switchCount = util . subTablesCount ( switchParams )если не switchCount, тоошибка ( L10n . error . switchMismatches , 0 )elseif switchCount > # switchLabels, затемerror ( string.format ( L10n . error . lesserSwitchLabels , switchCount , # switchLabels ), 0 )конец- Убедитесь, что будет использоваться обычная рамка (миниатюра будет построена- функция make.switcherHtml, если требуется, чтобы параметры переключателя были- внутри хвостовика)mapframeArgs . plain = "да"местный переключатель = {}для я = 1 , switchCount делатьlocal label = switchLabels [ i ]для имени , значение в паре ( switchParams ) делатьmapframeArgs [ имя ] = значения [ i ]конецtable.insert ( Switcher , {карта = стр . _main ( mapframeArgs ),label = "Показать" .. label})конецвозврат сделать . SwitcherHtml ( переключатель , {alignment = args [ "выравнивание рамки" ] или "вправо" ,isThumbnail = ( args . frame, а не args . plain ) и true или false ,width = args [ "frame-width" ] или L10n . по умолчанию . frameWidth ,caption = args . текст})конецфункция p . withOverlay ( _args )- Получить и обрезать викитекст для наложения картыlocal overlayMap = _args . наложениеесли type ( overlayMap ) == 'string', тоoverlayMap = overlayMap : match ( '^% s * (.-)% s * $' )конецlocal isThumbnail = ( util . getParameterValue ( _args , "frame" ), а не util . getParameterValue ( _args , "plain" )) и true или false- Получить базовую карту с помощью функции _main, как обычную картулокальные аргументы = утилит . trimArgs ( _args )аргументы . plain = "да"локальная базовая карта = p . _main ( аргументы )- Извлечь параметры наложения из аргументовlocal overlayOptions = {ширина = утилит . getParameterValue ( args , "frameWidth" ) или L10n . по умолчанию . frameWidth ,высота = утилит . getParameterValue ( args , "frameHeight" ) или L10n . по умолчанию . frameHeight ,align = util . getParameterValue ( args , "frameAlign" ) или L10n . по умолчанию . frameAlign ,граница = утилит . getParameterValue ( args , "overlayBorder" ) или L10n . по умолчанию . overlayBorder ,horizontalAlignment = util . getParameterValue ( args , "overlayHorizontalAlignment" ) или L10n . по умолчанию . overlayHorizontalAlignment ,horizontalOffset = утилит . getParameterValue ( args , "overlayHorizontalOffset" ) или L10n . по умолчанию . overlayHorizontalOffset ,verticalAlignment = util . getParameterValue ( args , "overlayVerticalAlignment" ) или L10n . по умолчанию . overlayVerticalAlignment ,verticalOffset = утилит . getParameterValue ( args , "overlayVerticalOffset" ) или L10n . по умолчанию . overlayVerticalOffset ,isThumbnail = isThumbnail ,caption = util . getParameterValue ( аргументы , «текст» ) или L10n . по умолчанию . текст}- Сделайте HTML для наложенных карт.возврат сделать . overlayHtml ( overlayMap , базовая карта , overlayOptions )конецвернуть p