Modulo:Mapframe: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
fix minori, rimosse parentesi tonde e quadre dove non necessarie, rinominato t in args e pp in points per più facile leggibilità
Riga 12:
 
function p.mappa(frame)
local targs = getArgs(frame)
 
local err = '-'
local numpoints = -1{}
 
local ppgeo = {}args.dati or -1
local geocolore = t['dati']args.colore or '#b80000' --1colore
local colore simbolo = t['colore']args.simbolo or '#b80000-number' --coloresimbolo
local simbologruppo = t['simbolo']args.gruppo or '-number' --simbolo
local gruppoautozoom = t['gruppo']args.autozoom or 's'
local autozoom = t['autozoom'] or 's'
local cornice
if (t['args.cornice']) then cornice = tonumber(t['args.cornice']) or 1 else cornice = 1 end
local lat1, lat2, lon1, lon2 = 400, -400, 400, -400
local num = -1
 
if (geo == -1) then
local num = 1
while (targs['nome' .. num]) do
pppoints[num] = {
nome = targs['nome' .. num], -- nome del punto
lat = tonumber(targs['lat' .. num]) or -400, --latitudine
lon = tonumber(targs['lon' .. num]) or -400, --longitudine
col = targs['colore' .. num] or colore, -- colore del punto
simb = (targs['simbolo' .. num] or simbolo), --simbolo da mostrare
}
if ((pppoints[num].simb == '-number') and (gruppo ~= '')) then pppoints[num].simb = "-number-" .. gruppo end
if (pppoints[num].lat > 85 or pppoints[num].lat < -85) then
err = string.format('latitudine non valida per il punto %d', num)
elseif (pppoints[num].lon > 180 or pppoints[num].lon<-180) then
err = string.format('longitudine non valida per il punto %d', num)
else
lat1 = math.min(lat1, pppoints[num].lat)
lat2 = math.max(lat2, pppoints[num].lat)
lon1 = math.min(lon1, pppoints[num].lon)
lon2 = math.max(lon2, pppoints[num].lon)
end
num = num + 1
Riga 52 ⟶ 49:
end
 
if (err == '-') then
local m_args = {}
m_args['.width'] = (t['args.larghezza'] or 350)
m_args['.height'] = (t['args.altezza'] or 300)
m_args['.align'] = (t['args.allinea'] or "'right")'
if (cornice ~= 1) then m_args['.frameless'] = 1 end
 
if (t['args.zoom']) then
m_args['.zoom'] = tonumber(t['args.zoom'])
elseif (geo == -1 and autozoom == 's') then
local dx = 1.1 * (lon2 - lon1) / 360
local dy = 1.1 * (math.log(math.tan( math.pi * (1 + lat2 / 90) / 4)) - math.log(math.tan( math.pi * (1 + lat1 / 90) / 4))) / (2 * math.pi)
 
local scalax, scalay
if (dx == 0) then scalax = 18 else scalax = math.floor(-math.log(dx) / math.log(2)) end
if (dy == 0) then scalay = 18 else scalay = math.floor(-math.log(dy) / math.log(2)) end
if ((dx == 0) and (dy == 0)) then
m_args['.zoom'] = 10 -- valore default per singolo punto
else
m_args['.zoom'] = math.max(0, math.min(18, scalax, scalay))
end
end
 
if ((cornice == 1) and (t['args.didascalia'])) then m_args['.text'] = t['args.didascalia'] end
 
if (t['args.centro_lon']) then
m_args['.longitude'] = tonumber(t['args.centro_lon'])
elseif (geo == -1) then
m_args['.longitude'] = (lon1 + lon2) / 2
end
 
if (t['args.centro_lat']) then
m_args['.latitude'] = tonumber(t['args.centro_lat'])
elseif (geo == -1) then
local l1 = 1 - math.log(math.tan( math.pi * (1 + lat1 / 90) / 4)) / math.pi
local l2 = 1 - math.log(math.tan( math.pi * (1 + lat2 / 90) / 4)) / math.pi
local centroy = (l1 + l2) / 2
centroy = (math.atan(math.exp(math.pi * (1 - centroy))) - math.pi / 4) * 360 / math.pi
m_args['.latitude'] = centroy
end
 
local m_dati
if (geo == -1) then
m_dati = { type = "'FeatureCollection"', features = {} }
for i = 1, #pppoints do
m_dati[".features"][i] = {
type = "'Feature"',
properties = {},
geometry = {
type = "'Point"',
coordinates = { pppoints[i].lon, pppoints[i].lat }
}
}
m_dati[".features"][i]['.properties']['marker-symbol'] = pppoints[i].simb
m_dati[".features"][i]['.properties']['marker-color'] = pppoints[i].col
m_dati[".features"][i]['.properties']['.title'] = pppoints[i].nome
end
m_dati = mw.text.jsonEncode(m_dati)
Riga 114 ⟶ 111:
m_dati = frame:preprocess(geo)
end
if (t['args.debug']) then
local mdebug = mw.text.jsonEncode(m_args)
mdebug =return string.format('<pre>' .. mdebug .. '%s\n\n' .. m_dati .. '%s</pre>', mdebug, m_dati)
return mdebug
else
return mw.getCurrentFrame():extensionTag ("'mapframe"', m_dati, m_args )
end
else