Module:OSM Location map and Module:OSM Location map/sandbox: Difference between pages
Appearance
(Difference between pages)
Content deleted Content added
ensure no magify less than 1 - it doesn't work |
use percentage font-size declarations where it is easy to do so |
||
Line 90: | Line 90: | ||
CTB["palegrey"],CTB["softgrey"],CTB["hardgrey"],CTB["darkgrey"]= "#E8E8D6","#AAAA88","#777755","#444433" |
CTB["palegrey"],CTB["softgrey"],CTB["hardgrey"],CTB["darkgrey"]= "#E8E8D6","#AAAA88","#777755","#444433" |
||
CTB["palegray"],CTB["softgray"],CTB["hardgray"],CTB["darkgray"]=CTB["palegrey"],CTB["softgrey"],CTB["hardgrey"],CTB["darkgrey"] |
CTB["palegray"],CTB["softgray"],CTB["hardgray"],CTB["darkgray"]=CTB["palegrey"],CTB["softgrey"],CTB["hardgrey"],CTB["darkgrey"] |
||
CTB["palebrown"],CTB["softbrown"],CTB["hardbrown"],CTB["darkbrown"]="#FAF6ED","#CCB56C","#AD7F14","# |
CTB["palebrown"],CTB["softbrown"],CTB["hardbrown"],CTB["darkbrown"]="#FAF6ED","#CCB56C","#AD7F14","#8E5913" |
||
CTB["palepurple"],CTB["softpurple"],CTB["hardpurple"],CTB["darkpurple"]="#e0d1e6","#c784e0","#a029cf","#7a05a8" |
CTB["palepurple"],CTB["softpurple"],CTB["hardpurple"],CTB["darkpurple"]="#e0d1e6","#c784e0","#a029cf","#7a05a8" |
||
CTB["paleorange"],CTB["softorange"],CTB["hardorange"],CTB["darkorange"]="#ffedc2","#ffcf61","#EEB533","#e39f05" |
CTB["paleorange"],CTB["softorange"],CTB["hardorange"],CTB["darkorange"]="#ffedc2","#ffcf61","#EEB533","#e39f05" |
||
CTB["black"],CTB["white"],CTB["yellow"]="#000000","#FFFFFF","#FAF039" |
CTB["black"],CTB["white"],CTB["yellow"]="#000000","#FFFFFF","#FAF039" |
||
CTB["background"],CTB["paleground"],CTB["beigeground"]="# |
CTB["background"],CTB["paleground"],CTB["beigeground"]="#F9F5E7","#FEFEFA","#F5F5DC" |
||
CTB["beige"]=CTB["beigeground"] |
CTB["beige"]=CTB["beigeground"] |
||
CTB["aqua"],CTB["teal"],CTB["fuchsia"] = "#00FFFF","#008080","#FF00FF" |
CTB["aqua"],CTB["teal"],CTB["fuchsia"] = "#00FFFF","#008080","#FF00FF" |
||
Line 109: | Line 109: | ||
pathshape.circledd = "M0,10a10,10 0 1,0 20,0a10,10 0 1,0 -20,0zm0.8,0a9.2,9.2 0 1,1 18.4,0a9.2,9.2 0 1,1 -18.4,0m1,0a8.2,8.2 0 1,0 16.4,0a8.2,8.2 0 1,0 -16.4,0zm0.8,0a7.2,7.2 0 1,1 14.8,0a7.2,7.2 0 1,1 -14.8,0m1,0 a6.4,6.4 0 1,1 12.8,0a6.4,6.4 0 1,1 -12.8,0z" |
pathshape.circledd = "M0,10a10,10 0 1,0 20,0a10,10 0 1,0 -20,0zm0.8,0a9.2,9.2 0 1,1 18.4,0a9.2,9.2 0 1,1 -18.4,0m1,0a8.2,8.2 0 1,0 16.4,0a8.2,8.2 0 1,0 -16.4,0zm0.8,0a7.2,7.2 0 1,1 14.8,0a7.2,7.2 0 1,1 -14.8,0m1,0 a6.4,6.4 0 1,1 12.8,0a6.4,6.4 0 1,1 -12.8,0z" |
||
pathshape.circled = "M2.5,10a7.5,7.5 0 1,0 15,0a7.5,7.5 0 1,0 -15,0zm1,0a6.5,6.5 0 1,1 13,0a6.5,6.5 0 1,1 -13,0m0.8,0 a5,5 0 1,1 11.4,0a5,5 0 1,1 -11.4,0" |
pathshape.circled = "M2.5,10a7.5,7.5 0 1,0 15,0a7.5,7.5 0 1,0 -15,0zm1,0a6.5,6.5 0 1,1 13,0a6.5,6.5 0 1,1 -13,0m0.8,0 a5,5 0 1,1 11.4,0a5,5 0 1,1 -11.4,0" |
||
pathshape.diamond = " |
pathshape.diamond = "M5,10 l 5,-10 l 5,10 -5,10 -5,-10z" |
||
pathshape.diamondd = " |
pathshape.diamondd = "M5,10 l 5,-10 5,10 -5,10 -5,-10zm1,0 l 4,8 l 4,-8 -4,-8 -4,8zm1,0 l 3,-6 3,6 -3,6 -3,-6z" |
||
pathshape.diamonddd = " |
pathshape.diamonddd = "M5,10 l 5,-10 5,10 -5,10 -5,-10zm0.5,0 l 4.5,9 l 4.5,-9 -4.5,-9 -4.5,9zm0.5,0 l 4,-8 4,8 -4,8 -4,-8zm0.5,0 l 3.5,7 l 3.5,-7 -3.5,-7 -3.5,7zm0.5,0 l 3,-6 3,6 -3,6 -3,-6z" |
||
pathshape.crossd = "M3.1,12.5 l4.2,0 l0,4.2 l5,0 l0,-4 l4.2,0 l0,-5 l-4.2,0 l0,-4.2 l-5,0 l0,4.2 l-4.2,0zM2.3,10a7.5,7.5 0 1,0 15,0a7.5,7.5 0 1,0 -15,0zm1,0a6.5,6.5 0 1,1 13,0a6.5,6.5 0 1,1 -13,0z" |
pathshape.crossd = "M3.1,12.5 l4.2,0 l0,4.2 l5,0 l0,-4 l4.2,0 l0,-5 l-4.2,0 l0,-4.2 l-5,0 l0,4.2 l-4.2,0zM2.3,10a7.5,7.5 0 1,0 15,0a7.5,7.5 0 1,0 -15,0zm1,0a6.5,6.5 0 1,1 13,0a6.5,6.5 0 1,1 -13,0z" |
||
pathshape.cross = "M3.1,12.5 l4.2,0 l0,4.2 l5,0 l0,-4 l4.2,0 l0,-5 l-4.2,0 l0,-4.2 l-5,0 l0,4.2 l-4.2,0z" |
pathshape.cross = "M3.1,12.5 l4.2,0 l0,4.2 l5,0 l0,-4 l4.2,0 l0,-5 l-4.2,0 l0,-4.2 l-5,0 l0,4.2 l-4.2,0z" |
||
pathshape.thincross = "M2,12 l6,0 l0,6 l4,0 l0,-6 l6,0 l0,-4 l-6,0 l0,-6 l-4,0 l0,6 l-6,0z" |
|||
pathshape.fivepointstar = "M10 0 L12.245 6.91 19.511 6.91 13.633 11.18 15.878 18.09 10 13.82 4.122 18.09 6.367 11.18 0.489 6.91 7.755 6.91Z" |
pathshape.fivepointstar = "M10 0 L12.245 6.91 19.511 6.91 13.633 11.18 15.878 18.09 10 13.82 4.122 18.09 6.367 11.18 0.489 6.91 7.755 6.91Z" |
||
pathshape.fivepointstard = "M10 1.5 L 11.90825 7.3735 18.08435 7.3735 13.08805 11.003 14.9963 16.8765 10 13.247 5.0037 16.8765 6.91195 11.003 1.91565 7.3735 8.09175 7.3735 ZM0,10a10,10 0 1,0 20,0a10,10 0 1,0 -20,0zm1.5,0a8.5,8.5 0 1,1 17,0a8.5,8.5 0 1,1 -17,0z" |
pathshape.fivepointstard = "M10 1.5 L 11.90825 7.3735 18.08435 7.3735 13.08805 11.003 14.9963 16.8765 10 13.247 5.0037 16.8765 6.91195 11.003 1.91565 7.3735 8.09175 7.3735 ZM0,10a10,10 0 1,0 20,0a10,10 0 1,0 -20,0zm1.5,0a8.5,8.5 0 1,1 17,0a8.5,8.5 0 1,1 -17,0z" |
||
Line 123: | Line 122: | ||
pathshape.eightpointstar = "M10 0 L11.88 5.46 17.071 2.929 14.54 8.12 20 10 14.54 11.88 17.071 17.071 11.88 14.54 10 20 8.12 14.54 2.929 17.071 5.46 11.88 0 10 5.46 8.12 2.929 2.929 8.12 5.46Z" |
pathshape.eightpointstar = "M10 0 L11.88 5.46 17.071 2.929 14.54 8.12 20 10 14.54 11.88 17.071 17.071 11.88 14.54 10 20 8.12 14.54 2.929 17.071 5.46 11.88 0 10 5.46 8.12 2.929 2.929 8.12 5.46Z" |
||
pathshape.eightpointstard = "M10 0 L10 1.5 L11.598 6.141 16.01035 3.98965 13.859 8.402 18.5 10 13.859 11.598 16.01035 16.01035 11.598 13.859 10 18.5 8.402 13.859 3.98965 16.01035 6.141 11.598 1.5 10 6.141 8.402 3.98965 3.98965 8.402 6.141ZM0,10a10,10 0 1,0 20,0a10,10 0 1,0 -20,0zm1.5,0a8.5,8.5 0 1,1 17,0a8.5,8.5 0 1,1 -17,0z" |
pathshape.eightpointstard = "M10 0 L10 1.5 L11.598 6.141 16.01035 3.98965 13.859 8.402 18.5 10 13.859 11.598 16.01035 16.01035 11.598 13.859 10 18.5 8.402 13.859 3.98965 16.01035 6.141 11.598 1.5 10 6.141 8.402 3.98965 3.98965 8.402 6.141ZM0,10a10,10 0 1,0 20,0a10,10 0 1,0 -20,0zm1.5,0a8.5,8.5 0 1,1 17,0a8.5,8.5 0 1,1 -17,0z" |
||
pathshape.ring=" |
pathshape.ring="M0,10a7.5,7.5 0 1,0 15,0a7.5,7.5 0 1,0 -15,0zm1,0a6.5,6.5 0 1,1 13,0a6.5,6.5 0 1,1 -13,0z" |
||
pathshape.boxd=pathshape.squared |
pathshape.boxd=pathshape.squared |
||
pathshape.boxdd=pathshape.squaredd |
pathshape.boxdd=pathshape.squaredd |
||
Line 159: | Line 158: | ||
s= s:sub(0,s:find("%d")-1) |
s= s:sub(0,s:find("%d")-1) |
||
opacity=string.match(color,"%d+") |
opacity=string.match(color,"%d+") |
||
if not CTB[s] then |
if not CTB[s] then |
||
-- debugmsg("couldn't find "..s..", try "..(colorList[s] or 'nil') ) |
|||
if not CTB[s] then debugmsg(mw.addWarning('color = '..color..'. The color name is not defined. Used default grey instead')) end |
|||
s= colorList[s] end |
|||
c=CTB[s] or CTB.hardgrey |
c=CTB[s] or CTB.hardgrey |
||
end |
end |
||
Line 176: | Line 176: | ||
return string.upper(string.sub(getColor(c),2)) |
return string.upper(string.sub(getColor(c),2)) |
||
end |
end |
||
local function checkColors(color) |
local function checkColors(color) |
||
Line 451: | Line 450: | ||
end |
end |
||
local function getScale(zoom, lat |
local function getScale(zoom, lat) |
||
if magVal and magVal>1 and magVal <=2 then zoom=zoom+(magVal-1) end |
|||
local dist=(156543.03 * math.cos(math.rad(math.abs(lat))) / (2 ^ zoom))/17 |
local dist=(156543.03 * math.cos(math.rad(math.abs(lat))) / (2 ^ zoom))/17 |
||
local y |
local y |
||
Line 632: | Line 630: | ||
shapeResult[nval].textBG=itemTab[2] or 'transparent' |
shapeResult[nval].textBG=itemTab[2] or 'transparent' |
||
end |
end |
||
if |
if not (CTB[shapeResult[nval].textBG] or colorList[shapeResult[nval].textBG]) then shapeResult[nval].textBG= 'transparent' end |
||
--label color etc |
--label color etc |
||
itemTab=splitItem(multiCheck(args,'label-color',argval, 'darkgrey','label-colour'),2) |
itemTab=splitItem(multiCheck(args,'label-color',argval, 'darkgrey','label-colour'),2) |
||
Line 650: | Line 648: | ||
if shapePos[2]=='with-line' or shapePos[2]=='n-line' then |
if shapePos[2]=='with-line' or shapePos[2]=='n-line' then |
||
shapeResult[nval].textEW=(shapePos[3] or '1')..'px' -- width |
shapeResult[nval].textEW=(shapePos[3] or '1')..'px' -- width |
||
shapeResult[nval].textEC= |
shapeResult[nval].textEC=shapeResult[nval].shapeColor or 'darkgrey' |
||
elseif shapePos[2]=='photo-panel' then |
elseif shapePos[2]=='photo-panel' then |
||
shapeResult[nval].textEW='2px' -- width |
shapeResult[nval].textEW='2px' -- width |
||
Line 813: | Line 811: | ||
local function makeSquare(result,row,shape,tshape) |
local function makeSquare(result,row,shape,tshape) |
||
local w,h,r=getsize(shape.shapeSize) |
local w,h,r=getsize(shape.shapeSize) |
||
⚫ | |||
if shape.shape=='square' then h=w end -- squares are always square!. box can stretch |
|||
⚫ | |||
if tshape then -- Add tooltip if needed |
if tshape then -- Add tooltip if needed |
||
div:attr('title',row.title) |
div:attr('title',row.title) |
||
Line 842: | Line 839: | ||
local function makeCircle(result,row,shape,tshape) |
local function makeCircle(result,row,shape,tshape) |
||
local w,h,r=getsize(shape.shapeSize) -- = width,height,rounding |
local w,h,r=getsize(shape.shapeSize) -- = width,height,rounding |
||
if shape.shape=='circle' then h=w end -- circles are always round. ellipse can stretch |
|||
local div=mw.html.create ('div') |
local div=mw.html.create ('div') |
||
if tshape then -- Add tooltip if needed |
if tshape then -- Add tooltip if needed |
||
Line 850: | Line 846: | ||
if shape.outlineWidth ~= "0px" then |
if shape.outlineWidth ~= "0px" then |
||
div:css('outline', shape.outlineWidth.." "..shape.outlineStyle.." "..getColor(shape.outlineColor)) |
div:css('outline', shape.outlineWidth.." "..shape.outlineStyle.." "..getColor(shape.outlineColor)) |
||
end |
|||
if shape.shapeAngle ~= "0deg" then |
|||
div:css('transform',"rotate("..shape.shapeAngle..")") |
|||
end |
end |
||
div |
div |
||
Line 942: | Line 935: | ||
-- return the text css div code to position and draw a shape occupying a specified clippath |
-- return the text css div code to position and draw a shape occupying a specified clippath |
||
if not pathshape[shape.shape] then |
if not pathshape[shape.shape] then |
||
print("Path shape",shape.shape,"not found...") |
|||
debugmsg(mw.addWarning('shape'..row.code..' = '..shape.shape..'. The shape name is not defined')) |
|||
return |
return |
||
end |
end |
||
local w,h,r=getsize(shape.shapeSize) |
local w,h,r=getsize(shape.shapeSize) |
||
if string.match(shape.shape,"circle") or string.match(shape.shape,"square") then h=w end -- use ellipse and box for stretched shapes |
|||
local shifth,shiftv = 0,0 |
local shifth,shiftv = 0,0 |
||
if string.match(shape.shape,"triangle") then |
if string.match(shape.shape,"triangle") then |
||
Line 1,182: | Line 1,174: | ||
elseif shape.shape=="curvea" or shape.shape=="curvec" then |
elseif shape.shape=="curvea" or shape.shape=="curvec" then |
||
makeCurveA(result,row,shape) |
makeCurveA(result,row,shape) |
||
elseif pathshape[shape.shape] then |
|||
if shape.outlineWidth ~= "0px" then |
if shape.outlineWidth ~= "0px" then |
||
makeClipPath(result,row,shape,true,false) -- larger path-shape to give the outline, if required |
makeClipPath(result,row,shape,true,false) -- larger path-shape to give the outline, if required |
||
Line 1,298: | Line 1,290: | ||
items,arcText=extractItem(items) -- first item is text, in quotes if it includes commas |
items,arcText=extractItem(items) -- first item is text, in quotes if it includes commas |
||
itemlist=splitItem(items,9) -- put items in a table: text, lat,lon,size,color,angle,gap,radius,ellipse |
itemlist=splitItem(items,9) -- put items in a table: text, lat,lon,size,color,angle,gap,radius,ellipse |
||
itemlist[4]=string.match((itemlist[4] or '0'),"[%.%-?%d]+") |
|||
itemlist[4]=string.match((itemlist[4] or '12'),"[%.%-?%d]+") |
|||
if itemlist[5]=='' then itemlist[5]='grey' end |
|||
itemlist[6]=string.match((itemlist[6] or '0'),"[%.%-?%d]+") |
itemlist[6]=string.match((itemlist[6] or '0'),"[%.%-?%d]+") |
||
itemlist[7]=string.match((itemlist[7] or '0'),"[%.%-?%d]+") |
itemlist[7]=string.match((itemlist[7] or '0'),"[%.%-?%d]+") |
||
Line 1,416: | Line 1,406: | ||
:css('color', getColor(legend.Color)) |
:css('color', getColor(legend.Color)) |
||
:css('transform', 'translateX(-50%)') |
:css('transform', 'translateX(-50%)') |
||
:css('font-size',' |
:css('font-size','85%') |
||
:wikitext(legend.Text) |
:wikitext(legend.Text) |
||
:done() |
:done() |
||
Line 1,437: | Line 1,427: | ||
:css('line-height','103%') |
:css('line-height','103%') |
||
:css('color', getColor(legend.Color)) |
:css('color', getColor(legend.Color)) |
||
:css('font-size',' |
:css('font-size','85%') |
||
:wikitext(legendLine[lct]) |
:wikitext(legendLine[lct]) |
||
:done() |
:done() |
||
Line 1,450: | Line 1,440: | ||
local frame=mw.getCurrentFrame() |
local frame=mw.getCurrentFrame() |
||
local dotTable={} |
local dotTable={} |
||
local magVal,scaleVal = args.magnify,'' |
|||
local origH,origW=maplist.height,maplist.width |
|||
⚫ | |||
if magVal then --set up the values needed to magnify the top-right portion of the map |
|||
magVal=tonumber(string.match(magVal or '0',"[%.%-?%d]+")) or 1 |
|||
if magVal>1 and magVal <=2 then |
|||
maplist.height= round(maplist.height/magVal,0) |
|||
maplist.width=round(maplist.width/magVal,0) |
|||
scaleVal='transform: scale('..magVal..') translateY('..tostring((origH-maplist.height)/2)..'px);' |
|||
else magVal=1 |
|||
end |
|||
--debugmsg('magVal='..magVal..', Magnify: H='..maplist.height..', ('..origH..'), W='..maplist.width..', ('..origW..'), scale='..scaleVal) |
|||
--debugmsg('top: '..tostring(((origW-maplist.width))/2)..'px;right: '..tostring(0-((origW-maplist.width))/2)..'px; (alt top: '..tostring(((origH-maplist.height))/2)..'px;)') |
|||
end |
|||
⚫ | |||
if args.float=='center' or args.float=='centre' then table.insert(result,'<div class="center"><div class="thumb tnone">') |
if args.float=='center' or args.float=='centre' then table.insert(result,'<div class="center"><div class="thumb tnone">') |
||
elseif args.float=='left' then table.insert(result,'<div class="thumb tleft">') |
elseif args.float=='left' then table.insert(result,'<div class="thumb tleft">') |
||
Line 1,471: | Line 1,448: | ||
table.insert(result,'<div class="thumbinner" style="position: relative; top: 0px; right: 0px; width: '..(args.width or "400")..'px;">') |
table.insert(result,'<div class="thumbinner" style="position: relative; top: 0px; right: 0px; width: '..(args.width or "400")..'px;">') |
||
if args.title then table.insert(result,'<div class="center" style="font-weight:bold">'..args.title..'</div>') end |
if args.title then table.insert(result,'<div class="center" style="font-weight:bold">'..args.title..'</div>') end |
||
⚫ | |||
if magVal and magVal >1 and magVal<=2 then |
|||
⚫ | |||
table.insert(result,'<div class="thumbinner noresize" style="display:block; position: relative; outline:0px; border:0px; padding:0px; background-color:transparent; color:inherit;') |
|||
⚫ | |||
table.insert(result,'height: '..origH..'px; width: '..maplist.width..'px; '..scaleVal..'">') |
|||
else |
|||
magVal=1 |
|||
⚫ | |||
table.insert(result,'top: 0px; right: 0px; ') |
|||
⚫ | |||
end |
|||
-- Create the basemap using mapframe |
-- Create the basemap using mapframe |
||
local mapframecontent=getmapframecontent(args,'basemap') |
local mapframecontent=getmapframecontent(args,'basemap') |
||
Line 1,507: | Line 1,476: | ||
end |
end |
||
if maplist.width-left >216 then top=top+14 end -- shunt scaleline down if it is beyond the copyright stuff |
if maplist.width-left >216 then top=top+14 end -- shunt scaleline down if it is beyond the copyright stuff |
||
local scalek,scalem=getScale(maplist.zoom, maplist.latbase |
local scalek,scalem=getScale(maplist.zoom, maplist.latbase) |
||
local magReduce='' |
|||
table.insert(result,"<div style=\"display:inline-block; position: absolute; background-color: #111111") |
table.insert(result,"<div style=\"display:inline-block; position: absolute; background-color: #111111") |
||
table.insert(result,"; color:inherit; clip-path:path(nonzero, 'M0,8 l0,4 l20,0 l0,-4 l-0.3,0 l0,3.7 l-19.4,0 l0,-3.7 z') ") |
table.insert(result,"; color:inherit; clip-path:path(nonzero, 'M0,8 l0,4 l20,0 l0,-4 l-0.3,0 l0,3.7 l-19.4,0 l0,-3.7 z') ") |
||
⚫ | |||
⚫ | |||
table.insert(result,"; width:20px") -- path is a 20px20px box, and then rescales |
table.insert(result,"; width:20px") -- path is a 20px20px box, and then rescales |
||
⚫ | |||
if magVal==1 then |
|||
⚫ | |||
table.insert(result,"; left:"..tostring(left+16).."px") |
|||
⚫ | |||
else -- shrink the scalemark to compensate for magnification |
|||
table.insert(result,"; top:"..tostring(top-(magVal*0.28)).."px") |
|||
table.insert(result,"; left:"..tostring(left+(16*(magVal*1.15))).."px") |
|||
table.insert(result,"; height:20px; transform:scale("..tostring(2.5*(1/magVal))..", "..tostring(1.5*(1/magVal))..")") |
|||
magReduce= 'scale('..tostring(1/magVal)..')' |
|||
end |
|||
table.insert(result,"\"></div>") |
table.insert(result,"\"></div>") |
||
table.insert(result,'<div style="position: absolute; top: '..tostring(top)..'px; left: '..tostring(left+47)..'px; font-size: |
table.insert(result,'<div style="position: absolute; top: '..tostring(top)..'px; left: '..tostring(left+47)..'px; font-size: 85%; line-height: 126%; width: fit-content;') |
||
table.insert(result,'color: #444433; background-color: transparent; text-align: right; transform: |
table.insert(result,'color: #444433; background-color: transparent; text-align: right; transform: translateX(-100%);">'..scalek..'<br>'..scalem..'</div>') |
||
end |
end |
||
Line 1,627: | Line 1,589: | ||
local contentend=' ] } ]' |
local contentend=' ] } ]' |
||
table.insert(result, '<div style="position: absolute;top: 9px;left: '..tostring(maplist.width-34)..'px">') |
table.insert(result, '<div style="position: absolute;top: 9px;left: '..tostring(maplist.width-34)..'px">') |
||
table.insert(result, '<div style="color: white; opacity:100; font-size: |
table.insert(result, '<div style="color: white; opacity:100; font-size: 125%; font-weight:normal; text-align: left;">') |
||
table.insert(result, frame:extensionTag{ name ='maplink', content=contentstart..table.concat(FullscreenList)..contentend, args={zoom=tostring(maplist.zoom+1), class='no-icon', frameless='1', |
table.insert(result, frame:extensionTag{ name ='maplink', content=contentstart..table.concat(FullscreenList)..contentend, args={zoom=tostring(maplist.zoom+1), class='no-icon', frameless='1', |
||
latitude=tostring(maplist.latbase), longitude=tostring(maplist.lonbase), --add invisble 'en-spaces' for tooltip |
latitude=tostring(maplist.latbase), longitude=tostring(maplist.lonbase), --add invisble 'en-spaces' for tooltip |