Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Применение
Этот модуль реализует шаблоны {{ Location map }} и {{ Location map ~ }}. Пожалуйста, ознакомьтесь с инструкциями по использованию на страницах шаблонов.
Известные проблемы
С момента появления поддержки разных заголовков при использовании нескольких карт проблема была выделена.
Некоторые шаблоны инфобоксов используют свой параметр заголовка напрямую, вместо того, чтобы передавать его этому модулю. Это приводит к отображению символа «##» между двумя заголовками.
Если вы не можете редактировать шаблон информационного окна, свяжитесь с Bellezzasolo .
Категории отслеживания / обслуживания
- Категория: Карты локаций с возможными ошибками
- Категория: Карты расположения с разной точностью долготы и широты (0)
- Категория: Карты местоположения с отметками за пределами карты и параметр за пределами карты не установлен (274)
- Категория: Расположение карты с именем , содержащим трубу (0)
- Категория: Расположение карты с удаленными параметрами (0)
- Категория: Карты местоположения с отрицательными градусами и минутами или секундами (1)
- Отслеживание изменений (см. Обсуждение): Категория: Страницы, использующие карту местоположения со знаком двойного числа в заголовке (0)
Смотрите также
- Все модули: страницы, начинающиеся с "Карта расположения"
- Модуль: Карта проезда / информация
- Модуль: Карта проезда / мульти
require ( 'Модуль: без глобальных переменных' )местный p = {}local getArgs = require ( 'Модуль: аргументы' ). getArgsлокальная функция round ( n , десятичные знаки )local pow = 10 ^ ( десятичные дроби или 0 )return math.floor ( n * pow + 0.5 ) / powконецфункция p . getMapParams ( карта , фрейм )если не карта, тоerror ( 'Необходимо указать имя используемого определения карты местоположения' , 2 )конецместный moduletitle = mw . название . new ( 'Module: Location map / data /' .. map )если не название модуля, тоerror ( string.format ( '% q не является допустимым именем для определения карты местоположения' , карта ), 2 )elseif moduletitle . существует тогдалокальные mapData = mw . loadData ( 'Модуль: Карта расположения / данные /' .. карта ) функция возврата ( имя , параметры )если name == nil, тоreturn 'Module: Location map / data /' .. mapelseif mapData [ name ] == nil тогдавернуться ''elseif params тогдавернуть мв . сообщение . newRawMessage ( tostring ( mapData [ имя ]), распаковать ( параметры )): plain ()ещевернуть mapData [ имя ]конецконецещеerror ( 'Невозможно найти указанное определение карты местоположения: "Модуль: Location map / data /' .. map .. '" не существует' , 2 )конецконецфункция p . данные ( фрейм , аргументы , карта )если не аргументы, тоargs = getArgs ( кадр , { frameOnly = true })конецесли не карта, токарта = стр . getMapParams ( аргументы [ 1 ], кадр )конецместные параметры = {}для k , v в ipairs ( args ) делаемесли k > 2, тоparams [ k - 2 ] = vконецконецвернуть карту ( args [ 2 ], # params ~ = 0 и params )конецlocal hemisphereMultipliers = {долгота = { W = - 1 , w = - 1 , E = 1 , e = 1 },широта = { S = - 1 , s = - 1 , N = 1 , n = 1 }}местная функция decdeg ( градусы , минуты , секунды , полушарие , десятичная дробь , направление )если десятичный, тоесли градусы, тоerror ( 'Десятичные градусы и градусы DMS не могут быть указаны для' .. направления , 2 )иначе если минут тогдаerror ( 'Минуты могут быть предоставлены только с градусами DMS для' .. направления , 2 )иначе, если секунды, тоerror ( 'Секунды могут быть предоставлены только с градусами DMS для' .. направления , 2 )ElseIf полушарие , тоerror ( 'Полушарие можно указать только градусы DMS для' .. направления , 2 )конецлокальная RetVal = ToNumber ( десятичное )если retval товернуть retvalконецerror ( 'Недействительное значение " .. десятичное .. " для " .. direction .. " , 2 )иначе, если секунды, а не минуты, тогдаerror ( 'Были указаны секунды для' .. direction .. 'без указания минут' , 2 )иначе, если не градусы, тоесли минуты тоerror ( 'Минуты были предоставлены для' .. direction .. 'без указания градусов' , 2 )ElseIf полушарие , тоerror ( 'Полусфера была предоставлена для' .. direction .. 'без указания градусов' , 2 )конецвернуть нольконецдесятичный = ToNumber ( градусы )если не десятичный, тоerror ( 'Значение в градусах " .. градусов .. ", указанное для' .. direction .. ', недействительно' , 2 )ElseIf минут и не ToNumber ( минут ) , тоerror ( 'Минутное значение " .. минут .. " указано для' .. direction .. 'недействительно' , 2 )ElseIf секунд и не ToNumber ( секунды ) , тоerror ( 'Второе значение " .. секунды .. '" указано для ' .. direction .. ' недействительно ' , 2 )конецдесятичный = десятичный + ( минуты или 0 ) / 60 + ( секунды или 0 ) / 3600если полушарие толокальный множитель = полушариеМножители [ направление ] [ полушарие ]если не множитель, тоerror ( 'Полушарие "' .. полушарие .. '" указано для' .. direction .. 'недопустимо' , 2 )конецдесятичный = десятичный * множительконецвернуть десятичную дробьконец- Находит параметр в включении {{Coord}}.локальная функция Coord2text ( пара , координата ) - это следует изменить для языков, в которых не используются арабские цифры или знак градусаместный лат , долгий = mw . ustring . match ( координаты , ' ([^ <] +) ([^ <] +) ' )если шир, товозвращение ToNumber ( пункт == «долгота» и длинные или широты )конецлокальный результат = mw . текст . split ( mw . ustring . match ( ordin , '% -? [%.% d] + ° [NS]% -? [%.% d] + ° [EW]' ) » или '' , '[°]' )если para == 'longitude', то результат = { результат [ 3 ], результат [ 4 ]} конецесли не ToNumber ( результат [ 1 ]) , или не привести к [ 2 ] , томв . log ( 'Неверное значение координат' )мв . logObject ( пара , 'пара' )мв . logObject ( коорд , 'коорд' )return error ( 'Неверное значение координат' , 2 )конецreturn tonumber ( result [ 1 ]) * hemisphereMultipliers [ para ] [ result [ 2 ]]конец- эффективно сделать removeBlanks ложным для подписи и ссылки на карту и истинным для всего остального- если useWikidata присутствует, но пусто, преобразовать ее в false вместо nil- p.top, p.bottom и их абоненты должны использовать этофункция p . valueFunc ( ключ , значение )если значение, тозначение = mw . текст . обрезать ( значение )конецесли значение ~ = '' или key == 'caption' или key == 'maplink', тогдавозвращаемое значениеelseif key == 'useWikidata' тогдавернуть ложьконецконецлокальная функция getContainerImage ( аргументы , карта )если аргументы . Альтернативная карта тогдавернуть аргументы . Альтернативная картаelseif args . рельеф и карта ( 'image1' ) ~ = '', затемвернуть карту ( 'image1' )ещевернуть карту ( 'изображение' )конецконецфункция p . верх ( фрейм , аргументы , карта )если не аргументы, тоargs = getArgs ( кадр , { frameOnly = true , valueFunc = p . valueFunc })конецесли не карта, токарта = стр . getMapParams ( аргументы [ 1 ], кадр )конецместная ширинаlocal default_as_number = tonumber ( mw . ustring . match ( tostring ( args . default_width ), "% d *" ))если не аргументы . ширина тогдаwidth = round (( default_as_number или 240 ) * ( tonumber ( map ( 'defaultscale' )) или 1 ))elseif mw . ustring . sub ( args . width , - 2 ) == 'px', затемширина = mw . ustring . sub ( args . width , 1 , - 3 )ещеширина = аргументы . ширинаконецлокальная width_as_number = ToNumber ( MW . ustring . соответствует ( ToString ( ширина ), "% д *" )) , или 0 ; если width_as_number == 0, тогда - проверьте, не является ли ширина ненужной. Если да, то используйте расчет по умолчанию. width = round (( default_as_number или 240 ) * ( tonumber ( map ( 'defaultscale' )) или 1 )) width_as_number = ToNumber ( MW . ustring . матч ( ToString ( ширина ), "% д *" )) , или 0 ; конец если аргументы . max_width ~ = "" и аргументы . max_width ~ = nil, тогда - проверьте, не превышает ли ширина max_width local max_as_number = tonumber ( mw . ustring . match ( args . max_width , "% d *" )) или 0 ; если width_as_number > max_as_number и max_as_number > 0, тогда ширина = аргументы . max_width ; конец конецlocal retval = frame : extensionTag { name = 'templatestyles' , args = { src = 'Module: Location map / styles.css' }}если аргументы . float == 'center', затемretval = retval .. ''конецесли аргументы . заголовок и аргументы . caption ~ = '' и args . border ~ = 'infobox', затемretval = retval .. 'если аргументы . float == '"left"' или аргументы . float == 'left', затемretval = retval .. 'tleft'elseif args . float == '"center"' или args . float == 'center' или args . float == '"none"' или args . float == 'none', тогдаretval = retval .. 'tnone'ещеretval = retval .. 'tright'конецretval = retval .. '"> .. ( width + 2 ) .. 'px'если аргументы . border == 'none', тогдаretval = retval .. '; border: none'elseif args . граница тогдаretval = retval .. '; цвет границы:' .. args . границаконецretval = retval .. '"> .. width .. 'px' .. ( args . border ~ = 'none' and '; border: 1px solid lightgray ">' или '">' )ещеretval = retval .. '.. width .. 'px;'если аргументы . float == '"left"' или аргументы . float == 'left', затемretval = retval .. 'float: left; clear: left'elseif args . float == '"center"' или args . float == 'center', затемretval = retval .. 'float: none; clear: both; margin-left: auto; margin-right: auto'elseif args . float == '"none"' или args . float == 'none', тогдаretval = retval .. 'float: none; clear: none'ещеretval = retval .. 'float: right; clear: right'конецretval = retval .. '"> .. width .. 'px; padding: 0 "> .. width .. 'px "> 'конецлокальное изображение = getContainerImage ( аргументы , карта )локальный currentTitle = mw . название . getCurrentTitle ()retval = string.format ('% s [[Файл:% s |% spx |% s% s]]' ,ретвал ,изображение ,ширина ,аргументы . alt или (( args . label или currentTitle . text ) .. 'находится в' .. map ( 'name' )),аргументы . maplink и ( '| link =' .. args . maplink ) или '')если аргументы . заголовок и аргументы . caption ~ = '', затемесли ( currentTitle . namespace == 0 ) и mw . ustring . find ( args . caption , '##' ), затемretval = retval .. '[[Категория: страницы, использующие карту местоположений со знаком двойного числа в заголовке]]'конецконецесли аргументы . overlay_image тогдаreturn retval .. ' [[File:' .. args . overlay_image .. '|' .. ширина .. 'px]]
'
еще retval = retval .. ''
конец retval = retval .. ( args . caption или ( args . label или currentTitle . text ) .. '(' .. map ( 'name' ) .. ')' ) .. '