Módulo:Mapa de localización
Uso
Este módulo implementa las plantillas {{Mapa de localización}}
y {{Mapa de localización~}}
. Por favor consulte las páginas de plantilla correspondientes para las instrucciones de uso.
Ejemplos
Múltiples mapas (a actualizar de sandbox)
{{#invoke:Mapa de localización|main|Gran Belfast#Irlanda del Norte#Isla de Irlanda#Reino Unido | pie = Ubicación en el [[Gran Belfast]]##Ubicación en [[Irlanda del Norte]]##Ubicación en la [[Isla de Irlanda]]##Ubicación en el [[Reino Unido]] | etiqueta = BHD | lat_gra = 54.615486 | lon_gra = -5.871233 }}
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Gran Belfast#Irlanda del Norte#Isla de Irlanda#Reino Unido ni la Plantilla:Mapa de localización de Gran Belfast#Irlanda del Norte#Isla de Irlanda#Reino Unido.
{{#invoke:Mapa de localización|main|Gran Belfast#Irlanda del Norte#Isla de Irlanda#Reino Unido | pie = Ubicación cerca del Gran Belfast | etiqueta = BFS | lat_gra = 54.6575 | lon_gra = -6.215833 }}
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Gran Belfast#Irlanda del Norte#Isla de Irlanda#Reino Unido ni la Plantilla:Mapa de localización de Gran Belfast#Irlanda del Norte#Isla de Irlanda#Reino Unido.
Ancho predeterminado y alineación, sin mapa ni etiqueta, pie predeterminado (coordenadas decimales) (a actualizar de sandbox)
Nota: Cuando no se especifica una etiqueta, el pie predeterminado es "Nombre de la página (Mapa nombre)" por lo que si este ejemplo se ve en una página llamada Pag, el título predeterminado sería "Pag (Tierra)". Del mismo modo, en una página llamada Pag (ciudad), el título predeterminado sería "Pag (ciudad) (Tierra)". Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/ ni la Plantilla:Mapa de localización de .
{{#invoke:Mapa de localización|main| | alt = Pag está en una isla. | lat_gra = 44.44 | lon_gra = 15.05 }}
Ancho predeterminado y alineación, sin etiqueta, pie predeterminado (coordenadas decimales)
Nota: Cuando no se especifica una etiqueta, el pie predeterminado es "Nombre de la página (Mapa nombre)" por lo que si este ejemplo se ve en una página llamada Pag, el título predeterminado sería "Pag (Croacia)". Del mismo modo, en una página llamada Pag (ciudad), el título predeterminado sería "Pag (ciudad) (Croacia)". Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Croacia ni la Plantilla:Mapa de localización de Croacia.
{{#invoke:Mapa de localización|main|Croacia | alt = Pag está en una isla. | lat_gra = 44.44 | lon_gra = 15.05 }}
Mapas con el pie por defecto (grados/minutos)
Nota: Cuando se especifica una etiqueta, el pie predeterminado es "texto de la etiqueta (Mapa nombre)", visto como "Pag (Croacia)" en este ejemplo. Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Croacia ni la Plantilla:Mapa de localización de Croacia.
{{#invoke:Mapa de localización|main|Croacia | ancho = 200 | alineación = right | alt = Pag está en una isla. | etiqueta = Pag | posición = right | marca = Green pog.svg <!-- punto verde --> | lat_gra = 44 | lat_min = 26 <!-- Por defecto: lat_dir = N --> | lon_gra = 15 | lon_min = 3 <!-- Por defecto: lon_dir = E --> }}
Marca fuera de los límites del mapa, sin pie
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Croacia ni la Plantilla:Mapa de localización de Croacia.
{{#invoke:Mapa de localización|main|Croacia | ancho = 200 | alineación = right | pie = | alt = Rimini está en Italia (aparece fuera del mapa) | lat_gra = 44.05 | lon_gra = 12.57 <! - Fuera borde izquierdo del mapa a 13,1 -> lon_deg = 12,57 | fuera = 1 <! - Somos conscientes el punto está fuera del mapa, por lo suprimimos la categoría de alerta -> fuera = 1 | etiqueta = Rimini | posición = right }}
pie, tamaño_etiqueta, fondo_etiqueta, marca, tamaño_marca
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Italia ni la Plantilla:Mapa de localización de Italia.
{{#invoke:Mapa de localización|main|Italia | ancho = 200 | alineación = right | pie = Ubicación de Rimini en Italia | alt = Mapa de Italia con la marca de la ubicación de Rimini | etiqueta = Rimini | tamaño_etiqueta = 150 <!--150% del tamaño norrmal--> | posición = bottom | color_etiqueta = orange <!-- naranja --> | marca = Orange_pog.svg | tamaño_marca = 12 <!--tamaño en pixels--> | lat_gra = 44.05 | lon_gra = 12.57 }}
Parámetro mapa_alternativo
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Italia ni la Plantilla:Mapa de localización de Italia.
{{#invoke:Mapa de localización|main|Italia | mapa_alternativo = Italy location map.svg | ancho = 200 | alineación = right | pie = Ubicación de Roma en Italia | alt = Mapa de italia con una marca que muestra la ubicación de Roma. | etiqueta = Roma | lat_gra = 41.9 | lon_gra = 12.5 }}
Parámetro tipo
También demuestra el posicionamiento automático de etiqueta a la izquierda, debido a la posición de extremo derecho de marca. Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Nepal ni la Plantilla:Mapa de localización de Nepal.
{{#invoke:Mapa de localización|main|Nepal | tipo = relieve | pie = Ubicación del Aeropuerto Biratnagar en Nepal | alt = El Aeropuerto Biratnagar Airport se ubica al sureste de Nepal | etiqueta = Biratnagar | marca = Airplane silhouette.svg | tamaño_marca = 10 | lat_gra = 26 | lat_min = 28 | lat_seg = 53 | lat_dir = N | lon_gra = 87 | lon_min = 15 | lon_seg = 50 | lon_dir = E }}
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Nepal ni la Plantilla:Mapa de localización de Nepal.
{{#invoke:Mapa de localización|main|Nepal | tipo = | pie = Ubicación del Aeropuerto Biratnagar en Nepal | alt = El Aeropuerto Biratnagar Airport se ubica al sureste de Nepal | etiqueta = Biratnagar | marca = Airplane silhouette.svg | tamaño_marca = 10 | lat_gra = 26 | lat_min = 28 | lat_seg = 53 | lat_dir = N | lon_gra = 87 | lon_min = 15 | lon_seg = 50 | lon_dir = E }}
Las mismas coordenadas en diferentes mapas
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Escocia ni la Plantilla:Mapa de localización de Escocia.
{{#invoke:Mapa de localización|main|Escocia | tipo = relieve | ancho = 180 | alineación = right | pie = Lockerbie en Escocia, Reino Unido | alt = Lockerbie se encuentra en el sur de Escocia. | etiqueta = Lockerbie | marca = Blue_pog.svg | lon_segsize = 9 | lat_gra = 55 | lat_min = 07 | lat_seg = 16 | lat_dir = N | lon_gra = 03 | lon_min = 21 | lon_seg = 19 | lon_dir = W }}
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Reino Unido ni la Plantilla:Mapa de localización de Reino Unido.
{{#invoke:Mapa de localización|main|Reino Unido | tipo = relieve | ancho = 180 | alineación = right | pie = Lockerbie en Escocia, Reino Unido | alt = Lockerbie se encuentra en el sur de Escocia. | etiqueta = Lockerbie | lon_seg = Blue_pog.svg | lon_segsize = 9 | lat_gra = 55 | lat_min = 07 | lat_seg = 16 | lat_dir = N | lon_gra = 03 | lon_min = 21 | lon_seg = 19 | lon_dir = W }}
Mapas que atraviesan el meridiano 180°
Error de Lua en la línea 431: No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/Fiyi ni la Plantilla:Mapa de localización de Fiyi.
{{#invoke:Mapa de localización|main|Fiyi | ancho = 180 | alineación = right | etiqueta = Suva | posición = right | color_etiqueta = yellow | marca = Locator_Dot.png | tamaño_marca = 7 | lat_gra = 18 | lat_min = 8 | lat_seg = 0 | lat_dir = S | lon_gra = 178 | lon_min = 26 | lon_seg = 0 | lon_dir = E }}
require('Módulo:No globals') local p = {} local getArgs = require('Módulo:Argumentos').obtenerArgumentos local function round(n, decimals) local pow = 10^(decimals or 0) return math.floor(n * pow + 0.5) / pow end function p.getMapParams(map, frame) if not map then error('Se debe especificar el nombre de la definición del mapa de localización que va a usar', 2) end map = mw.text.trim(map) --local moduletitle = mw.title.new('Módulo:Mapa de localización/datos/' .. map) --mw.log('Nombre ' .. 'Módulo:Mapa de localización/datos/' .. map) --if not moduletitle then -- mw.log('Nombre no válido ' .. 'Módulo:Mapa de localización/datos/' .. map) -- error('"' .. map .. '" no es un nombre válido para una definición de mapa de localización', 2) --elseif moduletitle.exists then -- local mapData = mw.loadData('Módulo:Mapa de localización/datos/' .. map) -- return function(name, params) -- if name == nil then -- return 'Módulo:Mapa de localización/datos/' .. map -- elseif mapData[name] == nil then -- return '' -- elseif params then -- return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain() -- else -- return mapData[name] -- end -- end --elseif mw.title.new('Plantilla:Mapa de localización de ' .. map).exists then if mw.title.new('Plantilla:Mapa de localización de ' .. map).exists then local cache = {} if type(frame) ~= 'table' or type(frame.expandTemplate) ~= 'function' then error('Debe proporcionar el objeto frame de la página si utiliza un mapa implementado mediante una plantilla') end return function(name, params) if params then return frame:expandTemplate{title = 'Plantilla:Mapa de localización de ' .. map, args = { name, unpack(params) }} else if name == nil then return 'Plantilla:Mapa de localización de ' .. map elseif cache[name] == nil then cache[name] = frame:expandTemplate{title = 'Plantilla:Mapa de localización de ' .. map, args = { name }} end return cache[name] end end else error('No se puede mostrar la ubicación especificada porque no existe el Módulo:Mapa de localización/datos/' .. map .. ' ni la Plantilla:Mapa de localización de ' .. map, 2) end end function p.data(frame, args, map) if not args then args = getArgs(frame, {frameOnly = true}) end if not map then map = p.getMapParams(args[1], frame) end local params = {} for k,v in ipairs(args) do if k > 2 then params[k-2] = v end end return map(args[2], #params ~= 0 and params) end local hemisphereMultipliers = { longitude = { W = -1, w = -1, O = -1, o = -1, E = 1, e = 1 }, latitude = { S = -1, s = -1, N = 1, n = 1 } } local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction) if not degrees or degrees == '' then if not decimal or decimal == '' then return nil end local retval = tonumber(decimal) if not retval then error('El valor "' .. decimal .. '" provisto en ' .. direction .. ' no es válido', 2) end return retval end decimal = tonumber(degrees) if not decimal then error('El valor de grados "' .. degrees .. '" provisto en ' .. direction .. ' no es válido', 2) end if minutes and minutes == '' then minutes = 0 end if seconds and seconds == '' then seconds = 0 end if minutes and not tonumber(minutes) then error('El valor de minutos "' .. minutes .. '" provisto en ' .. direction .. ' no es válido', 2) end if seconds and not tonumber(seconds) then error('El valor de segundos "' .. seconds .. '" provisto en ' .. direction .. ' no es válido', 2) end decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600 if hemisphere and hemisphere ~= '' then local multiplier = hemisphereMultipliers[direction][hemisphere] if not multiplier then error('El hemisferio "' .. hemisphere .. '" provisto en ' .. direction .. ' no es válido', 2) end decimal = decimal * multiplier end return decimal end -- Efectivamente hacer removeBlanks false para el pie y mapLink, y true para todo lo demás -- Si useWikidata está presente, pero en blanco, convertirlo en false en lugar de cero -- p.top, p.bottom y sus interlocutores necesitan utilizar esto function p.valueFunc(key, value) if value then value = mw.text.trim(value) end if value ~= '' or key == 'pie' or key == 'caption' or key == 'maplink' or key == "enlace_mapa" then return value elseif key == 'useWikidata' or key == "usar_wikidata"then return false end end local function getContainerImage(args, map) if (args.AlternativeMap and args.AlternativeMap ~= '') or (args.mapa_alternativo and args.mapa_alternativo ~= '') then return args.AlternativeMap or args.mapa_alternativo elseif args.tipo and args.tipo ~= '' and map(args.tipo) and map(args.tipo) ~= '' then return map(args.tipo) elseif args.relief or args.relieve and map('image1') ~= '' then return map('image1') else return map('image') end end function p.top(frame, args, map) local alineacion, borde, pie, ancho, enlaceMapa, etiqueta, ImagenSuperpuesta if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end -- Variable con los parámetros en inglés o en español local width ancho = args.ancho or args.width alineacion = args['alineación'] or args.float pie = args.caption or args['pie'] enlaceMapa = args.enlace_mapa or args.maplink etiqueta = args.label or args.etiqueta borde = args.borde or args.border ImagenSuperpuesta = args.imagen_superpuesta or args.overlay_image if not ancho or ancho == '' then width = round((args.default_width or 240) * (tonumber(map('defaultscale')) or 1)) elseif mw.ustring.sub(ancho, -2) == 'px' then width = mw.ustring.sub(ancho, 1, -3) else width = ancho end local retval = alineacion == 'center' and '<div class="center">' or '' if pie and pie ~= '' and pie ~= 'no' then retval = retval .. '<div class="noviewer thumb ' if alineacion == '"left"' or alineacion == 'left' then retval = retval .. 'tleft' elseif alineacion == '"center"' or alineacion == 'center' or alineacion == 'centrado' or alineacion == '"none"' or alineacion == 'none' then retval = retval .. 'tnone' else retval = retval .. 'tright' end retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px' if borde == 'none' then retval = retval .. ';border:none' elseif borde then retval = retval .. ';border-color:' .. borde end retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (borde ~= 'none' and ';border:1px solid lightgray">' or '">') else retval = retval .. '<div style="width:' .. width .. 'px;' if alineacion == '"left"' or alineacion == 'left' then retval = retval .. 'float:left;clear:left' elseif alineacion == '"center"' or alineacion == 'center' or alineacion == 'centrado' then retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto' elseif alineacion == '"none"' or args.float == 'none' then retval = retval .. 'float:none;clear:none' else retval = retval .. 'float:right;clear:right' end retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">' end local image = getContainerImage(args, map) retval = string.format( '%s[[Archivo:%s|%spx|%s%s]]', retval, image, width, args.alt or ('alt=' .. (etiqueta or mw.title.getCurrentTitle().text) .. ' ubicada en ' .. map('name')), enlaceMapa and ('|link=' .. enlaceMapa) or '' ) if args.overlay_image then return retval .. '<div style="position:absolute;top:0;left:0">[[Archivo:' .. ImagenSuperpuesta .. '|' .. width .. 'px]]</div>' else return retval end end function p.bottom(frame, args, map) local alineacion, borde, pie, ancho, enlaceMapa, etiqueta, pieNoDefinido if not args then args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc}) end if not map then map = p.getMapParams(args[1], frame) end -- Variable con los parámetros en inglés o en español local width ancho = args.ancho or args.width alineacion = args['alineación'] or args.float pie = args.caption or args['pie'] enlaceMapa = args.enlace_mapa or args.maplink etiqueta = args.etiqueta or args.label borde = args.borde or args.border pieNoDefinido = args.pie_no_definido or args.caption_undefined local retval = '</div>' if not pie then retval = retval .. '<div style="font-size:90%;padding-top:3px">' .. (( etiqueta or mw.title.getCurrentTitle().text) .. ' (' .. map('name') .. ')') .. '</div>' elseif pie == '' or pie == 'no' then retval = retval .. '<div style="font-size:90%;padding-top:3px"></div>' else -- Creando un vínculo sin ningún texto a propósito para que el CSS nos pueda dar una buena imagen retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:Archivo:' .. getContainerImage(args, map) .. '| ]]</div>' .. pie .. '</div>' end retval = retval .. '</div></div>' retval = retval .. (alineacion == 'center' and '</div>' or '') if pieNoDefinido then mw.log('parámetro pie_no_definido eliminado') local parent = frame:getParent() if parent then mw.log('El padre es ' .. parent:getTitle()) end mw.logObject(args, 'args') retval = retval .. '[[Categoría:Wikipedia:Mapas de localización con parámetro eliminado en la llamada]]' end return retval end local function markOuterDiv(x, y, imageDiv, labelDiv) return mw.html.create('div') :cssText('position:absolute;top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%;height:0;width:0;margin:0;padding:0') :node(imageDiv) :node(labelDiv) end local function markImageDiv(mark, marksize, label, link, alt, title) local builder = mw.html.create('div') :cssText('position:absolute;text-align:center;left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px;width:' .. marksize .. 'px;font-size:' .. marksize .. 'px;line-height:0') :attr('title', title) if marksize ~= 0 then builder:wikitext(string.format( '[[Archivo:%s|%dx%dpx|%s|link=%s%s]]', mark, marksize, marksize, label, link, alt and ('|alt=' .. alt) or '' )) end return builder end local function markLabelDiv(label, label_size, label_width, position, background, x, marksize) local builder = mw.html.create('div') :cssText('font-size:' .. label_size .. '%;line-height:110%;position:absolute;width:' .. label_width .. 'em') local distance = round(marksize / 2 + 1) local spanCss if position == 'top' then -- specified top builder:cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em;text-align:center') elseif position == 'bottom' then -- specified bottom builder:cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em;text-align:center') elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left builder:cssText('top:-0.75em;right:' .. distance .. 'px;text-align:right') spanCss = 'float:right' else -- specified right or autodetected to right builder:cssText('top:-0.75em;left:' .. distance .. 'px;text-align:left') spanCss = 'float:left' end builder = builder:tag('span') :cssText('padding:1px') :cssText(spanCss) :wikitext(label) if background then builder:cssText('background-color:' .. background) end return builder:done() end local function getX(longitude, left, right) local width = (tonumber(right) - tonumber(left)) % 360 if width == 0 then width = 360 end local distanceFromLeft = (longitude - left) % 360 -- La distancia más allá de la derecha del mapa es igual a distanceFromLeft - ancho. -- La distancia más allá de la izquierda del mapa es igual a 360 - distanceFromLeft. -- para minimizar el estiramiento de la página será de cualquier manera más corta if distanceFromLeft - width / 2 >= 180 then distanceFromLeft = distanceFromLeft - 360 end return 100 * distanceFromLeft / width end local function getY(latitude, top, bottom) return 100 * (top - latitude) / (top - bottom) end function p.mark(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Mapa de localización~'}) end if not map then map = p.getMapParams(args[1], frame) end local x, y, longitude, latitude, fuera, wikidata, declaraciones fuera = args.fuera or args.outside longitude = decdeg(args.lon_deg or args.lon_gra, args.lon_min, args.lon_sec or args.lon_seg, args.lon_dir, args.long, 'longitude') latitude = decdeg(args.lat_deg or args.lat_gra, args.lat_min, args.lat_sec or args.lat_seg, args.lat_dir, args.lat, 'latitude') wikidata = args.usar_wikidata or args.useWikidata if not longitude and not latitude and wikidata then -- Si no se proporcionan coordenadas se intentan obtener de Wikidata. declaraciones = require('Módulo:Wikidata').getDeclaraciones(args['entidad']) if declaraciones and declaraciones.P625 and declaraciones.P625[1].mainsnak.snaktype == 'value' then local value = declaraciones.P625[1].mainsnak.datavalue.value longitude, latitude = value.longitude, value.latitude end end if not longitude then error('No se ha dado un valor a la longitud') end if not latitude then error('No se ha dado valor a la latitud') end local builder = mw.html.create() if args.skew or args.lon_shift or args.markhigh then mw.log('Eliminados parámetros usados en la invocación.') local parent = frame:getParent() if parent then mw.log('El padre es ' .. parent:getTitle()) end mw.logObject(args, 'args') builder:wikitext('[[Categoría:Wikipedia:Mapas de localización con parámetro eliminado en la llamada]]') end --if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' then --or map('type') ~= '' then -- mw.log('Eliminados parámetros usados en la definición del mapa ' .. map()) -- builder:wikitext('[[Categoría:Wikipedia:Mapas de localización con parámetro eliminado en la llamada]]') --end if map('x') and map('x') ~= '' and tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude }))) then mw.log('Existe x -' .. map('x')) x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude }))) else mw.log('No existe x') x = tonumber(getX(longitude, map('left'), map('right'))) end if map('y') and map('y') ~= '' and tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude }))) then mw.log('Existe y -' .. map('y')) y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude }))) else mw.log('No existe y') y = tonumber(getY(latitude, map('top'), map('bottom'))) end if (x < 0 or x > 100 or y < 0 or y > 100) and not fuera then mw.log('La localización está fuera de los límites del mapa. x = ' .. x .. ', y = ' .. y) local parent = frame:getParent() if parent then mw.log('El padre es ' .. parent:getTitle()) end mw.logObject(args, 'args') builder:wikitext('[[Categoría:Wikipedia:Mapas de localización con la marca fuera de sus límites]]') end local mark = args.marca or args.mark or map('marca') or map('mark') if mark == '' then mark = 'Red pog.svg' end local etiqueta = args.etiqueta or args.label local posicion = args['posición'] or args.position local marksize = tonumber(args.marksize) or tonumber(args['tamaño_marca']) or tonumber(map('marksize')) or tonumber(map('tamaño_marca')) or 8 local imageDiv = markImageDiv(mark, marksize, etiqueta or mw.title.getCurrentTitle().text, args.enlace or args.link or '', args.alt, args[2]) local labelDiv if etiqueta and posicion ~= 'none' then labelDiv = markLabelDiv(etiqueta, args['tamaño_etiqueta'] or args.label_size or 90, args['ancho_etiqueta'] or args.label_width or 6, args['posición'] or args.position, args['color_etiqueta'] or args.background, x, marksize) end return builder:node(markOuterDiv(x, y, imageDiv, labelDiv)) end function p.main(frame, args, map) if not args then args = getArgs(frame, {wrappers = 'Plantilla:Mapa de localización de ', valueFunc = p.valueFunc}) mw.log('No detectados args') if args[1] then mw.log('Nombre ' .. args[1]) end end if not args[1] then args[1] = 'Tierra' end if args.useWikidata == nil and args.usar_wikidata == nil then args.useWikidata = true end if not map then map = p.getMapParams(tostring(args[1]), frame) end return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map) end return p