Modulo:Maplink: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
m modulo no globals obsoleto
 
(19 versioni intermedie di 3 utenti non mostrate)
Riga 1:
require('Module:No globalsstrict')
 
local getArgs = require('Module:Arguments').getArgs
 
local p = {}
 
-- Calcola centro per longitudine
-- esempio chiamata di funzione {{#invoke:Maplink|centro_lon|x1,x2,...}}
function p.centro_lon(frame)
local t = getArgs(frame)
local mn, mx = 400, -400
local xval
for x in string.gmatch(t[1],'([^,]+)') do
xval = tonumber(t[i]x)
if (mxmn <> xval) then mxmn = xval end
if (mx < xval) then mx = xval end
end
return (mn+mx)/2
end
 
-- Calcola centro per latitudine
-- esempio chiamata di funzione {{#invoke:Maplink|centro_lat|x1,x2,...}}
function p.centro_lat(frame)
local t = getArgs(frame)
local mn, mx = 400, -400
local xval
for x in string.gmatch(t[1],'([^,]+)') do
xval = tonumber(t[i]x)
if (lat1mn > vlrxval) then lat1mn = vlrxval end
if (lat2mx < vlrxval) then lat2mx = vlrxval end
end
if ((mx>85) or (mn<-85)) then return 0 end
local lat1 = 1-math.log(math.tan( math.pi*(1 + mn/90)/4))/math.pi
local lat2 = 1-math.log(math.tan( math.pi*(1 + mx/90)/4))/math.pi
local latm = (lat1+lat2)/2
local coord = (math.atan(math.exp(math.pi*(1-latm)))-math.pi/4)*360/math.pi
return coord
end
 
-- Calcola la scala adeguata per mappa OSM
-- esempio chiamata di funzione {{#invoke:Mappa OSMMaplink|scalazoom|w|h|x1,x2,...|y1|x2|,y2|...}}
function p.scalazoom(frame)
local t = getArgs(frame)
local lat1, lat2, lon1, lon2 = 400, -400, 400, -400
Line 12 ⟶ 46:
local dimy = tonumber(t[2]) or 1 --altezza
local vlr
for i,vx in ipairsstring.gmatch(t[3],'([^,]+)') do
vlr = tonumber(t[i]x)
if i>2 then
if (lon1 > vlr) then lon1 = vlr end
vlr = tonumber(t[i])
if (ilon2 %< 2 == 0vlr) then --calcololon2 latitudine minima= evlr massimaend
end
if (lat1 > vlr) then lat1 = vlr end
for x in string.gmatch(t[4],'([^,]+)') do
if (lat2 < vlr) then lat2 = vlr end
vlr = tonumber(x)
else --calcolo longitudine minima e massima
if (lon1lat1 > vlr) then lon1lat1 = vlr end
if (lon2lat2 < vlr) then lon2lat2 = vlr end
end
end
end
 
Line 29 ⟶ 61:
 
-- calcola posizione rispetto a Web Mercator per griglia di lato 1
-- con fattore 1.101 per evitare punti troppo vicini al margine
local dx = 1.101*(lon2-lon1)/360
local dy = 1.101*(math.log(math.tan( math.pi*(1 + lat2/90)/4)) - math.log(math.tan( math.pi*(1 + lat1/90)/4)))/(2*math.pi)
 
-- calcolo scale per coordinate
Line 46 ⟶ 78:
end
 
-- Calcola centrogradi per longitudinedecimali
-- esempio chiamata di funzione {{#invoke:Mappa OSMMaplink|centrogradi|x1numero gradi|x2numero primi|...numero secondi|punto cardinale}}
function p.centrogradi(frame)
local t = getArgs(frame)
local mn, mxt1 = 400,tonumber(t[1]) or -4000
local xvalt2 = tonumber(t[2]) or 0
forlocal i,vt3 in= ipairstonumber(t[3]) door 0
local s = 1;
xval = tonumber(t[i])
if (mn(t[4] >== xval'S') or (t[4] == 'W')) then mns = xval-1 end
return (s*(t1+t2/60+t3/3600))
if (mx < xval) then mx = xval end
end
return (mn+mx)/2
end
 
-- Calcola centrogradi per latitudinedecimali
-- esempio chiamata di funzione {{#invoke:Mappa OSMMaplink|centro2gradi|x1numero gradi|x2numero primi|...numero secondi|punto cardinale}}
function p.centro2gradi(frame)
local t = getArgs(frame)
local mn, mxt1 = 400,tonumber(t[1]) or -4000
local xvalt2 = tonumber(t[2]) or 0
forlocal i,vt3 in= ipairstonumber(t[3]) door 0
local s = 1;
xval = tonumber(t[i])
if (mn(t[4] >== xval'S') or (t[4] == 'W')) then mns = xval-1 end
return (s*(t1+t2/60+t3/3600))
if (mx < xval) then mx = xval end
end
 
if ((mx>85) or (mn<-85)) then return 0 end
-- Genera il tag di maplink per un punto
local lat1 = 1-math.log(math.tan( math.pi*(1 + mn/90)/4))/math.pi
--
local lat2 = 1-math.log(math.tan( math.pi*(1 + mx/90)/4))/math.pi
-- Questo metodo è stato convertito da un template.
local latm = (lat1+lat2)/2
-- Per vedere il codice originale:
local coord = (math.atan(math.exp(math.pi*(1-latm)))-math.pi/4)*360/math.pi
-- [[Speciale:PermaLink/88514901]]
return coord
function p.tagPunto( frame )
local args = getArgs( frame )
local lat = tonumber( args.lat )
local lon = tonumber( args.lon )
local zoomRaw = args.zoom
local zoom = zoomRaw and tonumber( zoomRaw ) or 13
local nome = args.nome or 'Posizione'
local icona = args.icona or 'circle'
local data = {
["type"] = "Feature",
["geometry"] = {
["type"] = "Point",
["coordinates"] = { lon, lat },
},
["properties"] = {
["title"] = nome,
["marker-symbol"] = icona,
["marker-color"] = "b80000",
},
}
local dataJson = mw.text.jsonEncode( data )
local tag = frame:callParserFunction{ name = '#tag:maplink', args = {
dataJson,
["zoom"] = zoom,
["latitude"] = lat,
["longitude"] = lon,
} }
return tag
end