<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3AMapa</id>
	<title>Moduł:Mapa - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3AMapa"/>
	<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Mapa&amp;action=history"/>
	<updated>2026-07-10T13:21:13Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Mapa&amp;diff=407&amp;oldid=prev</id>
		<title>Żółty Kapłan: 1 wersja</title>
		<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Mapa&amp;diff=407&amp;oldid=prev"/>
		<updated>2025-12-07T20:56:06Z</updated>

		<summary type="html">&lt;p&gt;1 wersja&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;pl&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← poprzednia wersja&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Wersja z 22:56, 7 gru 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;pl&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Brak różnic)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wiki_droga:diff:1.41:old-406:rev-407 --&gt;
&lt;/table&gt;</summary>
		<author><name>Żółty Kapłan</name></author>
	</entry>
	<entry>
		<id>https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Mapa&amp;diff=406&amp;oldid=prev</id>
		<title>wpl&gt;Nux: kosztowne wywołania https://pl.wikipedia.org/wiki/Wikipedia:Kawiarenka/Kwestie_techniczne#c-Nux-20250427120100-Nux-20250427105300</title>
		<link rel="alternate" type="text/html" href="https://wiki.idzie.xn--t-wha.xn--drog-eta.pl/index.php?title=Modu%C5%82:Mapa&amp;diff=406&amp;oldid=prev"/>
		<updated>2025-04-27T12:04:20Z</updated>

		<summary type="html">&lt;p&gt;kosztowne wywołania https://pl.wikipedia.org/wiki/Wikipedia:Kawiarenka/Kwestie_techniczne#c-Nux-20250427120100-Nux-20250427105300&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local function getMapParams(map, frame)&lt;br /&gt;
	mw.logObject(map, &amp;quot;map&amp;quot;)&lt;br /&gt;
	if not map or (#map == 0) then&lt;br /&gt;
		mw.log(&amp;quot;Brak nazwy mapy lokalizacyjnej&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local moduleprefix = &amp;quot;Module:Mapa/dane/&amp;quot;&lt;br /&gt;
	if map then&lt;br /&gt;
		local moduletitle = mw.title.new(map)&lt;br /&gt;
		if not moduletitle or (moduletitle.namespace ~= 828) then&lt;br /&gt;
			moduletitle = mw.title.new(moduleprefix..map)&lt;br /&gt;
		end&lt;br /&gt;
		if not moduletitle then&lt;br /&gt;
			mw.log(&amp;quot;„&amp;quot;..map..&amp;quot;” nie jest prawidłową nazwą definicji mapy lokalizacyjnej&amp;quot;)&lt;br /&gt;
		elseif moduletitle.exists then&lt;br /&gt;
			local status, mapData = pcall(mw.loadData, moduletitle.fullText)&lt;br /&gt;
			if status then&lt;br /&gt;
				return function(name, variant)&lt;br /&gt;
					if name == nil then&lt;br /&gt;
						--mw.logObject(moduletitle.fullText, &amp;quot;GET module title&amp;quot;)&lt;br /&gt;
						return moduletitle.fullText&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					local variants = variant and mw.text.split(variant, &amp;quot;%s*#%s*&amp;quot;) or {}&lt;br /&gt;
					--mw.logObject(variants, &amp;quot;GET map variants&amp;quot;)&lt;br /&gt;
					&lt;br /&gt;
					if name == true then&lt;br /&gt;
						for _, v in ipairs(variants) do&lt;br /&gt;
							--mw.logObject(mapData[v], &amp;quot;GET map variant&amp;quot;)&lt;br /&gt;
							if type(mapData[v]) == &amp;quot;table&amp;quot; then&lt;br /&gt;
								return v&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						return 1&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					for _, v in ipairs(variants) do&lt;br /&gt;
						if mapData[v] and mapData[v][name] ~= nil then&lt;br /&gt;
							--mw.logObject({variant=v, name=name, result=mapData[v][name] }, &amp;quot;GET&amp;quot;)&lt;br /&gt;
							return mapData[v][name]&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					if mapData[1][name] ~= nil then&lt;br /&gt;
						--mw.logObject({name=name, result=mapData[1][name] }, &amp;quot;GET&amp;quot;)&lt;br /&gt;
						return mapData[1][name]&lt;br /&gt;
					end&lt;br /&gt;
					&lt;br /&gt;
					--mw.logObject({name=name}, &amp;quot;GET&amp;quot;)&lt;br /&gt;
					return &amp;quot;&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			mw.log(&amp;quot;Nie mogę znaleźć definicji podanej mapy lokalizacyjnej. Nie istnieje „&amp;quot;..moduleprefix..map..&amp;quot;”.&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- default fallback&lt;br /&gt;
	local mapData = mw.loadData(moduleprefix..&amp;quot;brak&amp;quot;)&lt;br /&gt;
	return function(name, variant)&lt;br /&gt;
		if name == nil then&lt;br /&gt;
			return false&lt;br /&gt;
		elseif name == false then&lt;br /&gt;
			return (map and (#map &amp;gt; 0)) and map or false&lt;br /&gt;
		elseif name == true then&lt;br /&gt;
			return 1&lt;br /&gt;
		elseif mapData[1][name] == nil then&lt;br /&gt;
			return &amp;quot;&amp;quot;&lt;br /&gt;
		elseif variant and mapData[variant] then&lt;br /&gt;
			return mapData[variant][name] or mapData[1][name]&lt;br /&gt;
		else&lt;br /&gt;
			return mapData[1][name]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getX(longitude, left, right)&lt;br /&gt;
	local width = (right - left) % 360&lt;br /&gt;
	if width == 0 then&lt;br /&gt;
		width = 360&lt;br /&gt;
	end&lt;br /&gt;
	local distanceFromLeft = (longitude - left) % 360&lt;br /&gt;
	-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter&lt;br /&gt;
	if distanceFromLeft - width / 2 &amp;gt;= 180 then&lt;br /&gt;
		distanceFromLeft = distanceFromLeft - 360&lt;br /&gt;
	end&lt;br /&gt;
	return 100 * distanceFromLeft / width&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getY(latitude, top, bottom)&lt;br /&gt;
	return 100 * (top - latitude) / (top - bottom)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatCoordinates(parameters)&lt;br /&gt;
	if not parameters.coordinates then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local placement = parameters.placement&lt;br /&gt;
	if not placement then&lt;br /&gt;
		placement = ((parameters.linkFlag == false) or (mw.title.getCurrentTitle().namespace ~= 0)) and &amp;quot;w tekście&amp;quot; or &amp;quot;w tekście i na górze&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return require(&amp;quot;Moduł:Współrzędne&amp;quot;)[&amp;quot;współrzędne&amp;quot;]({&lt;br /&gt;
		parameters.coordinates,&lt;br /&gt;
		parameters.geohack,&lt;br /&gt;
		[&amp;quot;umieść&amp;quot;] = placement,&lt;br /&gt;
		[&amp;quot;dokładność&amp;quot;] = parameters.precision,&lt;br /&gt;
		[&amp;quot;linkuj&amp;quot;] = parameters.linkFlag == false and &amp;quot;nie&amp;quot; or &amp;quot;tak&amp;quot;,&lt;br /&gt;
		symbol = parameters.symbol,&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function splitCoordinatesAndReferences(input)&lt;br /&gt;
	return require(&amp;quot;Moduł:String/UNIQ&amp;quot;).podziel(input, &amp;quot;ref&amp;quot;, false)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function loadMap(frame, map, variant)&lt;br /&gt;
	local getMapParam = getMapParams(map, frame)&lt;br /&gt;
	return function(param)&lt;br /&gt;
		return getMapParam(param, variant)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function decodePoints(pointsData)&lt;br /&gt;
	if pointsData and (#pointsData &amp;gt; 0) then&lt;br /&gt;
		local data = mw.text.jsonDecode(&amp;quot;[&amp;quot;..pointsData..&amp;quot;{\&amp;quot;dummy\&amp;quot;:false}]&amp;quot;)&lt;br /&gt;
		table.remove(data) -- remove last dummy&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function estimateTextWidth(wikicode, fontSize)&lt;br /&gt;
	local text = mw.ustring.gsub(wikicode, &amp;quot;%[%[[^\n|%]%[]+|([^\n|%]%[]+)%]%]&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;%[%[([^\n|%]%[]+)%]%]&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
	text = mw.ustring.gsub(text, &amp;quot;&amp;lt;[^&amp;gt;]*&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
	return mw.ustring.len(text) * fontSize&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function positionDescriptionCode(r)&lt;br /&gt;
	local d = math.abs(r - 50)&lt;br /&gt;
	local c = false&lt;br /&gt;
	if d &amp;gt; 40 then&lt;br /&gt;
		c = &amp;#039;3&amp;#039;&lt;br /&gt;
	elseif d &amp;gt; 20 then&lt;br /&gt;
		c = &amp;#039;2&amp;#039;&lt;br /&gt;
	elseif d &amp;gt; 10 then&lt;br /&gt;
		c = &amp;#039;1&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		c = &amp;#039;0&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return r &amp;gt; 50 and c..&amp;#039;0&amp;#039; or &amp;#039;0&amp;#039;..c&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function relativePositionDescriptionCode(center, neighbour)&lt;br /&gt;
	local dx = neighbour.x - center.x&lt;br /&gt;
	local dy = neighbour.y - center.y&lt;br /&gt;
	local r = &amp;#039;0&amp;#039; if dx &amp;gt; 0 then r = &amp;#039;1&amp;#039; end&lt;br /&gt;
	local l = &amp;#039;0&amp;#039; if dx &amp;lt; 0 then l = &amp;#039;1&amp;#039; end&lt;br /&gt;
	local t = &amp;#039;0&amp;#039; if dy &amp;lt; 0 then t = &amp;#039;1&amp;#039; end&lt;br /&gt;
	local b = &amp;#039;0&amp;#039; if dy &amp;gt; 0 then b = &amp;#039;1&amp;#039; end&lt;br /&gt;
	local adx = math.abs(dx)&lt;br /&gt;
	local ady = math.abs(dy)&lt;br /&gt;
	if adx &amp;gt; (10 * ady) then&lt;br /&gt;
		t = &amp;#039;0&amp;#039;&lt;br /&gt;
		b = &amp;#039;0&amp;#039;&lt;br /&gt;
	elseif ady &amp;gt; (10 * adx) then&lt;br /&gt;
		r = &amp;#039;0&amp;#039;&lt;br /&gt;
		l = &amp;#039;0&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return r..l..t..b&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function plainText(content)&lt;br /&gt;
	if content then&lt;br /&gt;
		local c&lt;br /&gt;
		content, c = mw.ustring.gsub(content, &amp;quot;%[%[%s*[Pp]lik%s*:.-%]%]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		content, c = mw.ustring.gsub(content, &amp;quot;%[%[%s*[Ff]ile%s*:.-%]%]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		content, c = mw.ustring.gsub(content, &amp;quot;%[%[%s*[Gg]rafika%s*:.-%]%]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		content, c = mw.ustring.gsub(content, &amp;quot;%[%[%s*[Ii]mage%s*:.-%]%]&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		content, c = mw.ustring.gsub(content, &amp;quot;%[%[[^|%]]+|(.-)%]%]&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
		content, c = mw.ustring.gsub(content, &amp;quot;%[%[(.-)%]%]&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
		content, c = mw.ustring.gsub(content, &amp;quot;%[.- (.-)%]&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
		content, c = string.gsub(content, &amp;quot;&amp;lt;/?[Ss][Pp][Aa][Nn][^&amp;gt;]*&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		content, c = string.gsub(content, &amp;quot;&amp;lt;/?[Bb][Rr][^&amp;gt;]*&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		content, c = string.gsub(content, &amp;quot;&amp;lt;/?[AaBbIiPpQqSsUu][^&amp;gt;]*&amp;gt;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		content, c = string.gsub(content, &amp;quot;[ \n\r\t]+&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
		content = mw.text.unstrip(content)&lt;br /&gt;
		content = mw.text.nowiki(content)&lt;br /&gt;
		return mw.text.trim(content)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function drawMap(builder, get, width, fontSize, data, infoboxCoordinates, customAlt)&lt;br /&gt;
	local reliefImage = mw.text.trim(get(&amp;quot;mapa&amp;quot;))&lt;br /&gt;
	local reliefTitle = mw.title.new(&amp;quot;Plik:&amp;quot;..reliefImage)&lt;br /&gt;
	if not reliefTitle.file.exists then&lt;br /&gt;
		reliefTitle = mw.title.new(&amp;quot;Plik:Image of nothing.svg&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	local file = reliefTitle.file&lt;br /&gt;
	local height = file.height *  width / file.width&lt;br /&gt;
&lt;br /&gt;
	-- przeliczanie punktów na mapie&lt;br /&gt;
	local inside = {}&lt;br /&gt;
	local outside = {}&lt;br /&gt;
	local errors = {}&lt;br /&gt;
	local hoverPoints = false&lt;br /&gt;
	local alt = mw.loadData(&amp;quot;Moduł:Mapa/alt&amp;quot;)&lt;br /&gt;
	if data and (#data &amp;gt; 0) then&lt;br /&gt;
		local x_func = mw.text.trim(get(&amp;quot;x&amp;quot;))&lt;br /&gt;
		local y_func = mw.text.trim(get(&amp;quot;y&amp;quot;))&lt;br /&gt;
		local top = get(&amp;quot;top&amp;quot;)&lt;br /&gt;
		local left = get(&amp;quot;left&amp;quot;)&lt;br /&gt;
		local bottom = get(&amp;quot;bottom&amp;quot;)&lt;br /&gt;
		local right = get(&amp;quot;right&amp;quot;)&lt;br /&gt;
		if #x_func == 0 then&lt;br /&gt;
			x_func = false&lt;br /&gt;
		end&lt;br /&gt;
		if #y_func == 0 then&lt;br /&gt;
			y_func = false&lt;br /&gt;
		end&lt;br /&gt;
		for i, v in ipairs(data) do&lt;br /&gt;
			if v.latitude and v.longitude and v.mark and v.size then&lt;br /&gt;
				-- przeliczanie współrzędnych na pozycje rysowania&lt;br /&gt;
				if x_func then&lt;br /&gt;
					local expx = mw.ustring.gsub(mw.ustring.gsub(x_func, &amp;quot;{{{szerokość}}}&amp;quot;, v.latitude), &amp;quot;{{{długość}}}&amp;quot;, v.longitude)&lt;br /&gt;
					v.x = tonumber(mw.ext.ParserFunctions.expr(expx))&lt;br /&gt;
				else&lt;br /&gt;
					v.x = getX(v.longitude, left, right)&lt;br /&gt;
				end&lt;br /&gt;
				if y_func then&lt;br /&gt;
					local expy = mw.ustring.gsub(mw.ustring.gsub(y_func, &amp;quot;{{{szerokość}}}&amp;quot;, v.latitude), &amp;quot;{{{długość}}}&amp;quot;, v.longitude)&lt;br /&gt;
					v.y = tonumber(mw.ext.ParserFunctions.expr(expy))&lt;br /&gt;
				else&lt;br /&gt;
					v.y = getY(v.latitude, top, bottom)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				v.rx = width * v.x / 100&lt;br /&gt;
				v.ry = height * v.y / 100&lt;br /&gt;
				v.posDesc = alt.relativeDescription[positionDescriptionCode(v.x)..positionDescriptionCode(100-v.y)]&lt;br /&gt;
				if not v.alt then&lt;br /&gt;
					v.autoAlt = alt.pointDescription[v.mark] or alt.pointDescription[false]&lt;br /&gt;
					local desc = plainText(v.description)&lt;br /&gt;
					if desc and #desc &amp;gt; 0 then&lt;br /&gt;
						v.autoAlt = v.autoAlt..mw.ustring.format(alt.describedAs, desc)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				mw.logObject(v)&lt;br /&gt;
				&lt;br /&gt;
				if (v.x &amp;lt; 0) or (v.x &amp;gt; 100) or (v.y &amp;lt; 0) or (v.y &amp;gt; 100) then&lt;br /&gt;
					table.insert(outside, v)&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(inside, v)&lt;br /&gt;
					if not hoverPoints and (v.position == &amp;quot;hover&amp;quot;) and v.description then&lt;br /&gt;
						hoverPoints = true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			elseif v.error then&lt;br /&gt;
				table.insert(errors, v)&lt;br /&gt;
			else&lt;br /&gt;
				-- TODO illegal data or &amp;quot;dummy: false&amp;quot;&lt;br /&gt;
				mw.logObject(v, &amp;quot;illegal at &amp;quot;..tostring(i))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- automatyczne pozycjonowanie dwóch punktów&lt;br /&gt;
	if (#inside == 2) and inside[1].description and inside[2].description and not inside[1].position and not inside[2].position then&lt;br /&gt;
		local y1 = inside[1].ry&lt;br /&gt;
		local y2 = inside[2].ry&lt;br /&gt;
		if (math.abs(y1 - y2) &amp;lt; 16) and (y1 &amp;gt; 8) and (y2 &amp;gt; 8) and ((height - y1) &amp;gt; 8) and ((height - y2) &amp;gt; 8) and (math.abs(inside[1].rx - inside[2].rx) &amp;lt; 80) then&lt;br /&gt;
			inside[1].position = y2 &amp;gt; y1 and &amp;quot;top&amp;quot; or &amp;quot;bottom&amp;quot;&lt;br /&gt;
			inside[2].position = y1 &amp;gt; y2 and &amp;quot;top&amp;quot; or &amp;quot;bottom&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local altInfo = customAlt&lt;br /&gt;
	if not altInfo then&lt;br /&gt;
		altInfo = get(&amp;quot;alt&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
		if #altInfo == 0 then&lt;br /&gt;
			local g = get(&amp;quot;dopełniacz&amp;quot;)&lt;br /&gt;
			if g then&lt;br /&gt;
				altInfo = &amp;quot;Mapa konturowa &amp;quot;..g&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if (#altInfo &amp;gt; 0) and (#inside &amp;gt; 0) then&lt;br /&gt;
			local extAlt = inside[1].posDesc..alt.thereIs..(inside[1].alt or inside[1].autoAlt)&lt;br /&gt;
			if #inside == 1 then&lt;br /&gt;
				altInfo = altInfo..&amp;quot;, &amp;quot;..extAlt&lt;br /&gt;
			elseif #inside == 2 then&lt;br /&gt;
				local extAlt2 = alt.combine2..inside[2].posDesc..alt.thereIs..(inside[2].alt or inside[2].autoAlt)&lt;br /&gt;
				if inside[1].posDesc == inside[2].posDesc then&lt;br /&gt;
					local code = relativePositionDescriptionCode(inside[1], inside[2])&lt;br /&gt;
					extAlt2 = (alt.relativeDescription2[code] or alt.relativeDescription2[false])..alt.thereIs2..(inside[2].alt or inside[2].autoAlt)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				altInfo = altInfo..&amp;quot;, &amp;quot;..extAlt..&amp;quot;, &amp;quot;..extAlt2&lt;br /&gt;
			elseif (#inside &amp;gt; 1) and infoboxCoordinates then&lt;br /&gt;
				altInfo = altInfo..&amp;quot;, &amp;quot;..extAlt&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- tło mapy&lt;br /&gt;
	local relief = builder:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
	relief:css({ position = &amp;quot;relative&amp;quot;, border = &amp;quot;0 solid #aaa&amp;quot;, padding = &amp;quot;0&amp;quot;, width = tostring(width)..&amp;quot;px&amp;quot; })&lt;br /&gt;
	relief:wikitext(&amp;quot;[[Plik:&amp;quot;, reliefImage, &amp;quot;|&amp;quot;, width, &amp;quot;px|class=notpageimage|link=&amp;quot;)&lt;br /&gt;
	if #altInfo &amp;gt; 0 then&lt;br /&gt;
		relief:wikitext(&amp;quot;|alt=&amp;quot;, altInfo)&lt;br /&gt;
	end&lt;br /&gt;
	if not hoverPoints then&lt;br /&gt;
		local reliefInfo = get(&amp;quot;dopełniacz&amp;quot;)&lt;br /&gt;
		if reliefInfo then&lt;br /&gt;
			relief:wikitext(&amp;quot;|Mapa lokalizacyjna &amp;quot;, reliefInfo)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	relief:wikitext(&amp;quot;]]&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	function showError(category, ...)&lt;br /&gt;
		local catLink = &amp;quot;&amp;quot;&lt;br /&gt;
		local known = {&lt;br /&gt;
			[&amp;quot;brak mapy&amp;quot;] = { &amp;quot;&amp;#039;&amp;#039;&amp;#039;Brak mapy:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;quot;, &amp;quot;[[Kategoria:Szablony lokalizacyjne - brak mapy]]&amp;quot;, },&lt;br /&gt;
			[&amp;quot;brak kodu mapy&amp;quot;] = { &amp;quot;&amp;#039;&amp;#039;&amp;#039;Brak kodu mapy&amp;#039;&amp;#039;&amp;#039;&amp;quot;, &amp;quot;[[Kategoria:Szablony lokalizacyjne - brak kodu mapy]]&amp;quot;, },&lt;br /&gt;
			[&amp;quot;współrzędne spoza mapy&amp;quot;] = { &amp;quot;&amp;#039;&amp;#039;&amp;#039;Współrzędne spoza mapy:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;%f %f&amp;#039;&amp;#039;&amp;quot;, &amp;quot;[[Kategoria:Szablony lokalizacyjne - współrzędne spoza mapy]]&amp;quot;, },&lt;br /&gt;
			[&amp;quot;brak współrzędnych&amp;quot;] = { &amp;quot;&amp;#039;&amp;#039;&amp;#039;Brak współrzędnych&amp;#039;&amp;#039;&amp;#039;&amp;quot;, &amp;quot;[[Kategoria:Szablony lokalizacyjne – brak współrzędnych]]&amp;quot;, },&lt;br /&gt;
			[true] = { &amp;quot;%s&amp;quot;, false },&lt;br /&gt;
			[false] = { &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Inny błąd&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;quot;, false, },&lt;br /&gt;
		}&lt;br /&gt;
		local k = known[category] or known[false]&lt;br /&gt;
		local message = mw.ustring.format(k[1], ...)&lt;br /&gt;
		if k[2] and (mw.title.getCurrentTitle().namespace == 0) then&lt;br /&gt;
			message = message..k[2]&lt;br /&gt;
		end&lt;br /&gt;
		local absolute = relief:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:css( { position = &amp;quot;absolute&amp;quot;, [&amp;quot;z-index&amp;quot;] = 200, top = &amp;quot;50%&amp;quot;, left = &amp;quot;50%&amp;quot;, height = 0, width = 0, margin = 0, padding = 0, } )&lt;br /&gt;
		local msg = absolute:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:css( { [&amp;quot;font-size&amp;quot;] = &amp;quot;90%&amp;quot;, [&amp;quot;line-height&amp;quot;] = &amp;quot;110%&amp;quot;, position = &amp;quot;relative&amp;quot;, width = &amp;quot;16em&amp;quot;, [&amp;quot;z-index&amp;quot;] = 202, top = &amp;quot;-0.5em&amp;quot;, left = &amp;quot;-8em&amp;quot;, float = &amp;quot;center&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;center&amp;quot;, background = &amp;quot;white&amp;quot;, color = &amp;quot;red&amp;quot;, } )&lt;br /&gt;
			:wikitext(message)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- brak mapy&lt;br /&gt;
	if not get() then&lt;br /&gt;
		local map = get(false)&lt;br /&gt;
		showError(map and &amp;quot;brak mapy&amp;quot; or &amp;quot;brak kodu mapy&amp;quot;, map)&lt;br /&gt;
		if (#inside == 1) and (#outside == 0) then&lt;br /&gt;
			local v = inside[1]&lt;br /&gt;
			if (v.longitude == 0) and (v.latitude == 0) then&lt;br /&gt;
				--mw.log(&amp;quot;dummy (0 0) bez mapy nie jest rysowany&amp;quot;)&lt;br /&gt;
				return&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- błędy&lt;br /&gt;
	if (#inside == 0) and (#outside == 0) then&lt;br /&gt;
		showError(&amp;quot;brak współrzędnych&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, v in ipairs(outside) do&lt;br /&gt;
		showError(&amp;quot;współrzędne spoza mapy&amp;quot;, v.latitude, v.longitude)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, v in ipairs(errors) do&lt;br /&gt;
		showError(true, v.error or &amp;quot;?&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- punkty na mapie&lt;br /&gt;
	for i, v in ipairs(inside) do&lt;br /&gt;
		local hsize = tostring(v.size/2)..&amp;quot;px&amp;quot;&lt;br /&gt;
		local size = tostring(v.size)..&amp;quot;px&amp;quot;&lt;br /&gt;
		local absolute = relief:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:attr(&amp;quot;aria-hidden&amp;quot;, &amp;quot;true&amp;quot;)&lt;br /&gt;
			:css( { position = &amp;quot;absolute&amp;quot;, [&amp;quot;z-index&amp;quot;] = 2, top = tostring(v.y)..&amp;quot;%&amp;quot;, left = tostring(v.x)..&amp;quot;%&amp;quot;, height = 0, width = 0, margin = 0, padding = 0, } )&lt;br /&gt;
		local file = absolute:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:css( { position = &amp;quot;relative&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;center&amp;quot;, left = &amp;quot;-&amp;quot;..hsize, top = &amp;quot;-&amp;quot;..hsize, width = size, [&amp;quot;font-size&amp;quot;] = size, [&amp;quot;line-height&amp;quot;] = size, } )&lt;br /&gt;
		file:wikitext(&amp;quot;[[Plik:&amp;quot;, v.mark, &amp;quot;|&amp;quot;, v.size, &amp;quot;x&amp;quot;, size, &amp;quot;|link=&amp;quot;, v.link)&lt;br /&gt;
		if v.description then&lt;br /&gt;
			file:wikitext(&amp;quot;|&amp;quot;, v.description)&lt;br /&gt;
		end&lt;br /&gt;
		file:wikitext(&amp;quot;]]&amp;quot;)&lt;br /&gt;
		-- TODO description&lt;br /&gt;
		if v.description and (v.position ~= &amp;quot;hover&amp;quot;) then&lt;br /&gt;
			&lt;br /&gt;
			local textWidthLimit = 120&lt;br /&gt;
			&lt;br /&gt;
			function descriptionWidth(availableWidth)&lt;br /&gt;
				return availableWidth &amp;lt;= 0 and &amp;quot;auto&amp;quot; or (math.min(availableWidth, textWidthLimit)..&amp;quot;px&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local descw = &amp;quot;auto&amp;quot;&lt;br /&gt;
			local css = {}&lt;br /&gt;
			if v.position == &amp;quot;right&amp;quot; then&lt;br /&gt;
				descw = descriptionWidth(math.floor(width - v.rx - (v.size / 2) - 5))&lt;br /&gt;
				css = { top = &amp;quot;-0.5em&amp;quot;, left = tostring((v.size / 2) + 2)..&amp;quot;px&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;left&amp;quot;, float = &amp;quot;left&amp;quot; }&lt;br /&gt;
			elseif v.position == &amp;quot;left&amp;quot; then&lt;br /&gt;
				descw = descriptionWidth(math.floor(v.rx - (v.size / 2) - 5))&lt;br /&gt;
				css = { top = &amp;quot;-0.5em&amp;quot;, right = tostring((v.size / 2) + 2)..&amp;quot;px&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;right&amp;quot;, float = &amp;quot;right&amp;quot; }&lt;br /&gt;
			elseif v.position == &amp;quot;top&amp;quot; then&lt;br /&gt;
				descw = &amp;quot;10em&amp;quot;&lt;br /&gt;
				css = { bottom = tostring((v.size / 4) + 2)..&amp;quot;px&amp;quot;, left = &amp;quot;-5em&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;center&amp;quot;, float = &amp;quot;center&amp;quot; }&lt;br /&gt;
			elseif v.position == &amp;quot;bottom&amp;quot; then&lt;br /&gt;
				descw = &amp;quot;10em&amp;quot;&lt;br /&gt;
				css = { top = tostring((v.size / 4) + 2)..&amp;quot;px&amp;quot;, left = &amp;quot;-5em&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;center&amp;quot;, float = &amp;quot;center&amp;quot; }&lt;br /&gt;
			else -- auto&lt;br /&gt;
				local textWidth = estimateTextWidth(v.description, fontSize) * 0.6&lt;br /&gt;
				local twoLines = textWidth &amp;gt; textWidthLimit&lt;br /&gt;
				local minY = fontSize * (twoLines and 1 or 0.5)&lt;br /&gt;
				local maxY = height - minY&lt;br /&gt;
				local goodY = (v.ry &amp;gt;= minY) and (v.ry &amp;lt;= maxY)&lt;br /&gt;
				if goodY and ((v.x &amp;lt; 50) or ((v.rx + textWidth + (v.size / 2) + 2) &amp;lt; width)) then -- right&lt;br /&gt;
					descw = descriptionWidth(math.floor(width - v.rx - (v.size / 2) - 5))&lt;br /&gt;
					css = { top = twoLines and &amp;quot;-1em&amp;quot; or &amp;quot;-0.5em&amp;quot;, left = tostring((v.size / 2) + 2)..&amp;quot;px&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;left&amp;quot;, float = &amp;quot;left&amp;quot; }&lt;br /&gt;
				elseif goodY and (((v.rx - (v.size / 2) - 2) &amp;gt; textWidth) or (v.x &amp;gt; 70)) then -- left&lt;br /&gt;
					descw = descriptionWidth(math.floor(v.rx - (v.size / 2) - 5))&lt;br /&gt;
					css = { top = twoLines and &amp;quot;-1em&amp;quot; or &amp;quot;-0.5em&amp;quot;, right = tostring((v.size / 2) + 2)..&amp;quot;px&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;right&amp;quot;, float = &amp;quot;right&amp;quot; }&lt;br /&gt;
				elseif (v.y &amp;gt; 50) then -- top&lt;br /&gt;
					descw = &amp;quot;10em&amp;quot;&lt;br /&gt;
					css = { bottom = tostring((v.size / 4) + 2)..&amp;quot;px&amp;quot;, left = &amp;quot;-5em&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;center&amp;quot;, float = &amp;quot;center&amp;quot; }&lt;br /&gt;
				else -- bottom&lt;br /&gt;
					descw = &amp;quot;10em&amp;quot;&lt;br /&gt;
					css = { top = tostring((v.size / 4) + 2)..&amp;quot;px&amp;quot;, left = &amp;quot;-5em&amp;quot;, [&amp;quot;text-align&amp;quot;] = &amp;quot;center&amp;quot;, float = &amp;quot;center&amp;quot; }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local desc = absolute:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
				:css( { [&amp;quot;font-size&amp;quot;] = tostring(fontSize)..&amp;quot;px&amp;quot;, [&amp;quot;line-height&amp;quot;] = tostring(1.2*fontSize)..&amp;quot;px&amp;quot;, [&amp;quot;z-index&amp;quot;] = &amp;quot;90&amp;quot;, [&amp;quot;position&amp;quot;] = &amp;quot;absolute&amp;quot;, [&amp;quot;width&amp;quot;] = descw, } )&lt;br /&gt;
			desc:css(css)&lt;br /&gt;
			desc:tag(&amp;quot;span&amp;quot;)&lt;br /&gt;
				:css({ padding = &amp;quot;1px&amp;quot;, [&amp;quot;text-shadow&amp;quot;] = &amp;quot;0 0 5px white;&amp;quot; })&lt;br /&gt;
				:wikitext(v.description)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeTrackingLinks(get, group)&lt;br /&gt;
	local linkAlias = get(&amp;quot;link alias&amp;quot;)&lt;br /&gt;
	local mapVariant = get(true)&lt;br /&gt;
	if not linkAlias or (#linkAlias == 0) then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local trackingLink = &amp;quot;Moduł:Mapa/linkujące/&amp;quot;..linkAlias..&amp;quot;/&amp;quot;..group&lt;br /&gt;
	-- (kosztowne!) _ = mw.title.new(trackingLink).id&lt;br /&gt;
	-- (kosztowne!) _ = mw.title.new(trackingLink..&amp;quot;/&amp;quot;..mapVariant).id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function adjustPointParams(points, mapgeohack)&lt;br /&gt;
	for i, p in ipairs(points) do&lt;br /&gt;
		local link = p.link&lt;br /&gt;
		if link then&lt;br /&gt;
			if mapgeohack==false then&lt;br /&gt;
				p.link = &amp;quot;&amp;quot;&lt;br /&gt;
			elseif mapgeohack then&lt;br /&gt;
				p.link = link..&amp;quot;_&amp;quot;..mapgeohack&lt;br /&gt;
			elseif p.geohack then&lt;br /&gt;
				p.link = link..&amp;quot;_&amp;quot;..p.geohack&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tryGetMapFor(property)&lt;br /&gt;
	local pid, qid, props = require(&amp;quot;Module:Wikidane/select&amp;quot;).selectProperty(property, mw.loadData(&amp;quot;Moduł:Mapa/filters&amp;quot;), nil, nil, &amp;quot;najlepsza&amp;quot;)&lt;br /&gt;
	if not qid then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local maps = {}&lt;br /&gt;
	for i, v in ipairs(props) do&lt;br /&gt;
		if v.mainsnak and (v.mainsnak.snaktype == &amp;quot;value&amp;quot;) and (v.mainsnak.datatype == &amp;quot;wikibase-item&amp;quot;) then&lt;br /&gt;
			local name = mw.wikibase.getLabelByLang(v.mainsnak.datavalue.value.id, &amp;quot;pl&amp;quot;)&lt;br /&gt;
			if name then&lt;br /&gt;
				table.insert(maps, name)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #maps &amp;lt;= 0 then&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = table.concat(maps,&amp;#039;#&amp;#039;)&lt;br /&gt;
	mw.logObject(result,&amp;quot;tryGetMapFor(&amp;quot;..property..&amp;quot;)&amp;quot;)&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isKartographerZoom(map, size)&lt;br /&gt;
	if not map then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if string.match(map,&amp;quot;^[1-9]$&amp;quot;) or string.match(map, &amp;quot;^1[0-9]$&amp;quot;) then&lt;br /&gt;
		return map&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local w = tonumber(size)&lt;br /&gt;
	if w and (w &amp;gt; 0) then&lt;br /&gt;
		local d, k = string.match(map, &amp;quot;^([0-9]+) ?(k?)m$&amp;quot;)&lt;br /&gt;
		local d = tonumber(d)&lt;br /&gt;
		if d and (d &amp;gt; 0) then&lt;br /&gt;
			if k == &amp;quot;k&amp;quot; then&lt;br /&gt;
				d = d * 1000&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local z = (math.log(96000) + math.log(w) - math.log(d)) / math.log(2)&lt;br /&gt;
			local zoom = math.min(math.max(math.floor(z), 1),19)&lt;br /&gt;
			mw.logObject({w = w, d = d, z=z, zoom=zoom}, &amp;quot;zoom calc&amp;quot;)&lt;br /&gt;
			return zoom&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;Wartość&amp;quot;] = function(frame)&lt;br /&gt;
		local f = frame.args[1] and frame or frame:getParent()&lt;br /&gt;
		return getMapParams(f.args[1], frame)(f.args[2], f.args[3])&lt;br /&gt;
	end,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;Infobox&amp;quot;] = function(frame)&lt;br /&gt;
		-- log wskazujący na początek wywołania funkcji&lt;br /&gt;
		mw.log(&amp;quot;{{#invoke:Moduł:Mapa|Infobox}}&amp;quot;)&lt;br /&gt;
		local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
			trim = true,&lt;br /&gt;
			removeBlanks = true,&lt;br /&gt;
			wrappers = &amp;quot;Szablon:Infobox mapa lokalizacyjna&amp;quot;,&lt;br /&gt;
		})&lt;br /&gt;
		local defaultIcon = &amp;quot;[[Plik:Geographylogo.svg|20px|alt=Ziemia|link=Ziemia]]&amp;quot;&lt;br /&gt;
		local map = args[&amp;quot;mapa&amp;quot;]&lt;br /&gt;
			or tryGetMapFor(&amp;quot;P17&amp;quot;) -- państwo&lt;br /&gt;
			or tryGetMapFor(&amp;quot;P706&amp;quot;) -- region geograficzny&lt;br /&gt;
			or tryGetMapFor(&amp;quot;P30&amp;quot;) -- kontynent&lt;br /&gt;
			or &amp;quot;brak&amp;quot; -- poddaję się&lt;br /&gt;
		local variant = args[&amp;quot;wariant&amp;quot;]&lt;br /&gt;
		local description = args[&amp;quot;opis&amp;quot;]&lt;br /&gt;
		local mark = args[&amp;quot;znak na mapie&amp;quot;] or &amp;quot;Red pog.svg&amp;quot;&lt;br /&gt;
		local markSize = tonumber(args[&amp;quot;wielkość znaku&amp;quot;]) or 6&lt;br /&gt;
		local coordinates = args[&amp;quot;współrzędne&amp;quot;]&lt;br /&gt;
		local coordsRefs = false&lt;br /&gt;
		local markalt = args[&amp;quot;alt znaku na mapie&amp;quot;]&lt;br /&gt;
		if not coordinates then&lt;br /&gt;
			mw.log(&amp;quot;infobox może wyszukać współrzędne w wikidanych&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			coordinates, coordsRefs = splitCoordinatesAndReferences(coordinates)&lt;br /&gt;
			mw.logObject(coordinates, &amp;quot;współrzędne&amp;quot;)&lt;br /&gt;
			if coordsRefs then&lt;br /&gt;
				-- (kosztowne!) _ = mw.title.new(&amp;quot;Moduł:Mapa/przypisy&amp;quot;).id&lt;br /&gt;
				mw.logObject(coordsRefs, &amp;quot;przypisy&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local precision = args[&amp;quot;dokładność&amp;quot;]&lt;br /&gt;
		local twoMaps = args[&amp;quot;dwie mapy&amp;quot;]&lt;br /&gt;
		local category = args[&amp;quot;kategoria&amp;quot;]&lt;br /&gt;
		local geohack = args[&amp;quot;opcje geohack&amp;quot;]&lt;br /&gt;
		local position = args[&amp;quot;pozycja opisu&amp;quot;]&lt;br /&gt;
		local points = args[&amp;quot;punkty mapy&amp;quot;]&lt;br /&gt;
		mw.logObject({precision = precision, twoMaps = twoMaps, category = category, geohack = geohack, position = position, points = points}, &amp;quot;argumenty&amp;quot;)&lt;br /&gt;
		if points and not string.match(points, &amp;quot;%s*{&amp;quot;) then&lt;br /&gt;
			mw.log(&amp;quot;załączone punkty do mapy są w nieodpowiednim formacie&amp;quot;)&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		if not points and not coordinates then&lt;br /&gt;
			if args[&amp;quot;wikidane&amp;quot;] == &amp;quot;nie&amp;quot; then&lt;br /&gt;
				mw.log(&amp;quot;brak punktów na mapę, a nie ma pozwolenia na Wikidane&amp;quot;)&lt;br /&gt;
			elseif map ~= &amp;quot;pusta&amp;quot; then&lt;br /&gt;
				mw.log(&amp;quot;brak punktów na mapę i współrzędnych, nadszedł czas na Wikidane&amp;quot;)&lt;br /&gt;
				local display = true&lt;br /&gt;
				if (map ~= &amp;quot;osobna&amp;quot;) and (map ~= &amp;quot;niedostępna&amp;quot;) then&lt;br /&gt;
					display = &amp;quot;#coordinates&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
				local p = require(&amp;quot;Moduł:Współrzędne&amp;quot;).punkt({&lt;br /&gt;
					[&amp;quot;opcje geohack&amp;quot;] = geohack,&lt;br /&gt;
					[&amp;quot;znak&amp;quot;] = mark,&lt;br /&gt;
					[&amp;quot;rozmiar znaku&amp;quot;] = markSize,&lt;br /&gt;
					[&amp;quot;opis&amp;quot;] = description,&lt;br /&gt;
					[&amp;quot;pozycja&amp;quot;] = position,&lt;br /&gt;
					[&amp;quot;dokładność&amp;quot;] = precision,&lt;br /&gt;
					[&amp;quot;alt&amp;quot;] = markalt,&lt;br /&gt;
					display = display,&lt;br /&gt;
					symbol = false,&lt;br /&gt;
				})&lt;br /&gt;
				if not p then&lt;br /&gt;
					mw.log(&amp;quot;brak punktów na mapę nawet w Wikidanych&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				points = p&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if not points and not coordinates and (mw.title.getCurrentTitle().fullText == frame:getParent():getTitle()) and (type(frame.getParent) == &amp;quot;function&amp;quot;) then&lt;br /&gt;
			--TEST ANY ARG&lt;br /&gt;
			local any = false&lt;br /&gt;
			for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
				any = true&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if not any then&lt;br /&gt;
				-- brak jakichkolwiek argumentów w szablonie to tryb demo&lt;br /&gt;
				points = require(&amp;quot;Moduł:Współrzędne&amp;quot;).punkt({ &amp;quot;0 0&amp;quot;, display = true, symbol = false, })&lt;br /&gt;
				map = &amp;quot;brak&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if not points and not coordinates then&lt;br /&gt;
			if not category or (mw.title.getCurrentTitle().namespace ~= 0) or (map == &amp;quot;żadna&amp;quot;) or (map == &amp;quot;osobna&amp;quot;) or (map == &amp;quot;pusta&amp;quot;) or (map == &amp;quot;niedostępna&amp;quot;) then&lt;br /&gt;
				return&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			return &amp;#039;|- style=&amp;quot;display:none;&amp;quot;\n!colspan=&amp;quot;2&amp;quot;|brak współrzędnych[[Kategoria:Szablony lokalizacyjne – brak współrzędnych – &amp;#039;..category..&amp;#039;]]\n|-&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local result = {}&lt;br /&gt;
		local coords = false&lt;br /&gt;
		if (map == &amp;quot;żadna&amp;quot;) or (map == &amp;quot;none&amp;quot;) then&lt;br /&gt;
			-- (kosztowne!) _ = mw.title.new(&amp;quot;Moduł:Mapa/linkujące/żadna&amp;quot;).id&lt;br /&gt;
			-- TODO współrzędne, geohack, linkuj=tak, dokładność=kątowo, umieść=w tekście (i na górze)&lt;br /&gt;
			coords = formatCoordinates({&lt;br /&gt;
				coordinates = coordinates,&lt;br /&gt;
				geohack = geohack,&lt;br /&gt;
				linkFlag = true,&lt;br /&gt;
			})&lt;br /&gt;
		elseif map == &amp;quot;osobna&amp;quot; then&lt;br /&gt;
			-- (kosztowne!) _ = mw.title.new(&amp;quot;Moduł:Mapa/linkujące/osobna&amp;quot;).id&lt;br /&gt;
			-- TODO współrzędne, geohack, linkuj=tak, dokładność=kątowo, umieść=w tekście&lt;br /&gt;
			coords = formatCoordinates({&lt;br /&gt;
				coordinates = coordinates,&lt;br /&gt;
				geohack = geohack,&lt;br /&gt;
				linkFlag = true,&lt;br /&gt;
				placement = &amp;quot;w tekście&amp;quot;,&lt;br /&gt;
			})&lt;br /&gt;
		elseif map == &amp;quot;pusta&amp;quot; then&lt;br /&gt;
			-- (kosztowne!) _ = mw.title.new(&amp;quot;Moduł:Mapa/linkujące/pusta&amp;quot;).id&lt;br /&gt;
			-- no map nor coordinates&lt;br /&gt;
		elseif map == &amp;quot;niedostępna&amp;quot; then&lt;br /&gt;
			-- (kosztowne!) _ = mw.title.new(&amp;quot;Moduł:Mapa/linkujące/niedostępna&amp;quot;).id&lt;br /&gt;
			-- TODO współrzędne, globe:none, linkuj=nie, dokładność=dziesiętnie, normalizacja=auto, ikona=&lt;br /&gt;
			coords = formatCoordinates({&lt;br /&gt;
				coordinates = coordinates,&lt;br /&gt;
				linkFlag = false,&lt;br /&gt;
				precision = precision or &amp;quot;dziesiętnie&amp;quot;,&lt;br /&gt;
			})&lt;br /&gt;
		elseif (map == &amp;quot;dynamiczna&amp;quot;) or isKartographerZoom(map, 240) then&lt;br /&gt;
			-- (kosztowne!) _ = mw.title.new(&amp;quot;Moduł:Mapa/kartographer&amp;quot;).id&lt;br /&gt;
			-- (kosztowne!) _ = mw.title.new(&amp;quot;Moduł:Mapa/kartographer/&amp;quot;..map).id&lt;br /&gt;
			coords = formatCoordinates({&lt;br /&gt;
				coordinates = coordinates,&lt;br /&gt;
				geohack = geohack or &amp;quot;&amp;quot;,&lt;br /&gt;
				linkFlag = true,&lt;br /&gt;
				precision = precision or &amp;quot;kątowo&amp;quot;,&lt;br /&gt;
				symbol = icon,&lt;br /&gt;
			})&lt;br /&gt;
			local primaryPoint = false&lt;br /&gt;
			if coordinates  then&lt;br /&gt;
				local p = require(&amp;quot;Moduł:Współrzędne&amp;quot;).punkt({&lt;br /&gt;
					coordinates,&lt;br /&gt;
					[&amp;quot;znak&amp;quot;] = mark,&lt;br /&gt;
					[&amp;quot;rozmiar znaku&amp;quot;] = markSize,&lt;br /&gt;
					[&amp;quot;opis&amp;quot;] = description,&lt;br /&gt;
					symbol = false,&lt;br /&gt;
				})&lt;br /&gt;
				primaryPoint = true&lt;br /&gt;
				points = points and (p..points) or p&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local pointsData = decodePoints(points)&lt;br /&gt;
			mw.logObject(pointsData, &amp;quot;pointsData&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
			if not coords and pointsData and (#pointsData &amp;gt; 0) then&lt;br /&gt;
				icon = false&lt;br /&gt;
				coords = pointsData[1].display&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			longitude = 0&lt;br /&gt;
			latitude = 0&lt;br /&gt;
			for i, v in ipairs(pointsData) do&lt;br /&gt;
				longitude = longitude + v.longitude&lt;br /&gt;
				latitude = latitude + v.latitude&lt;br /&gt;
			end&lt;br /&gt;
			longitude = longitude / #pointsData&lt;br /&gt;
			latitude = latitude / #pointsData&lt;br /&gt;
			&lt;br /&gt;
			local mapWidth = 238&lt;br /&gt;
			local map1 = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
				:css( { margin=&amp;quot;0 auto&amp;quot;, [&amp;quot;text-align&amp;quot;]=&amp;quot;center&amp;quot;, width=tostring(mapWidth+4)..&amp;quot;px&amp;quot; } )&lt;br /&gt;
			map1:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
				:css( { [&amp;quot;font-weight&amp;quot;]= &amp;quot;bold&amp;quot;, color=&amp;quot;var(--color-subtle, #54595d);&amp;quot; } )&lt;br /&gt;
				:wikitext(&amp;quot;Położenie na mapie&amp;quot;)&lt;br /&gt;
			local content = {}&lt;br /&gt;
			if #pointsData == 1 then&lt;br /&gt;
				content.type = &amp;quot;Feature&amp;quot;&lt;br /&gt;
				content.properties = {}&lt;br /&gt;
				content.properties[&amp;quot;marker-color&amp;quot;] = &amp;quot;f00&amp;quot;&lt;br /&gt;
				content.properties[&amp;quot;marker-size&amp;quot;] = &amp;quot;medium&amp;quot;&lt;br /&gt;
				content.properties.description = description&lt;br /&gt;
				content.geometry = {&lt;br /&gt;
					type = &amp;quot;Point&amp;quot;,&lt;br /&gt;
					coordinates = {longitude, latitude},&lt;br /&gt;
				}&lt;br /&gt;
			else&lt;br /&gt;
				content.type = &amp;quot;FeatureCollection&amp;quot;&lt;br /&gt;
				content.features = {}&lt;br /&gt;
				for i, v in ipairs(pointsData) do&lt;br /&gt;
					p = {}&lt;br /&gt;
					p.type = &amp;quot;Feature&amp;quot;&lt;br /&gt;
					p.properties = {}&lt;br /&gt;
					p.properties[&amp;quot;marker-size&amp;quot;] = (primaryPoint and (i == 1)) and &amp;quot;medium&amp;quot; or &amp;quot;small&amp;quot;&lt;br /&gt;
					p.properties[&amp;quot;marker-color&amp;quot;] = (primaryPoint and (i == 1)) and &amp;quot;f00&amp;quot; or &amp;quot;00f&amp;quot;&lt;br /&gt;
					p.geometry = {&lt;br /&gt;
						type = &amp;quot;Point&amp;quot;,&lt;br /&gt;
						coordinates = {v.longitude, v.latitude},&lt;br /&gt;
					}&lt;br /&gt;
					table.insert(content.features, p)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			mw.logObject(content, &amp;quot;content&amp;quot;)&lt;br /&gt;
			local contentJson = mw.text.jsonEncode(content, mw.text.JSON_PRETTY)&lt;br /&gt;
			mw.logObject(contentJson, &amp;quot;contentJson&amp;quot;)&lt;br /&gt;
			local zoom = isKartographerZoom(map, 240)&lt;br /&gt;
			if not zoom then&lt;br /&gt;
				zoom = (#pointsData &amp;gt; 1)&lt;br /&gt;
					and nil -- zoom się sam ustali (TODO sprawdź czy punkty są różne)&lt;br /&gt;
					or 12 -- jeden punkt wymaga konkretnej skali&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local kartographer = frame:extensionTag(&amp;#039;mapframe&amp;#039;, contentJson, {&lt;br /&gt;
				width = mapWidth,&lt;br /&gt;
				height = mapWidth,&lt;br /&gt;
				zoom = zoom,&lt;br /&gt;
				longitude = longitude,&lt;br /&gt;
				latitude = latitude,&lt;br /&gt;
				align = &amp;quot;center&amp;quot;,&lt;br /&gt;
				lang = &amp;quot;local&amp;quot;,&lt;br /&gt;
				frameless = 1&lt;br /&gt;
			})&lt;br /&gt;
			map1:wikitext(kartographer)&lt;br /&gt;
			table.insert(result, &amp;#039;|- class=&amp;quot;infobox-locationmap&amp;quot; style=&amp;quot;background-color:var(--background-color-base, #fff); color:black; text-align:center; border-top:1px solid var(--border-color-base, #a2a9b1);&amp;quot;\n|colspan=&amp;quot;2&amp;quot;|&amp;#039;)&lt;br /&gt;
			table.insert(result, tostring(map1:allDone()))&lt;br /&gt;
			table.insert(result, &amp;quot;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
		else&lt;br /&gt;
			local maps = {}&lt;br /&gt;
			local list = string.match(map, &amp;quot;#&amp;quot;)&lt;br /&gt;
			for v in mw.ustring.gmatch(map, &amp;quot;[^#]+&amp;quot;) do&lt;br /&gt;
				table.insert(maps, mw.text.trim(v))&lt;br /&gt;
			end&lt;br /&gt;
			if #maps == 0 then&lt;br /&gt;
				table.insert(maps, map)&lt;br /&gt;
			end&lt;br /&gt;
			if not list and (twoMaps ~= &amp;quot;nie&amp;quot;) then&lt;br /&gt;
				while #map &amp;gt; 0 do&lt;br /&gt;
					local get = loadMap(frame, map, variant)&lt;br /&gt;
					map = mw.text.trim(get(&amp;quot;nadrzędna&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
					if #map &amp;gt; 0 then&lt;br /&gt;
						table.insert(maps, 2, map)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local mapIndex = 1&lt;br /&gt;
			local map = maps[mapIndex]&lt;br /&gt;
			local get = loadMap(frame, map, variant)&lt;br /&gt;
			-- prepare coordinates under the map&lt;br /&gt;
			local icon = mw.text.trim(get(&amp;quot;ikona&amp;quot;) or &amp;quot;&amp;quot;)&lt;br /&gt;
			if #icon == 0 then&lt;br /&gt;
				icon = defaultIcon&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			local mapPrecision = get(&amp;quot;dokładność&amp;quot;)&lt;br /&gt;
			if mapPrecision and (#mapPrecision &amp;lt;= 0) then&lt;br /&gt;
				mapPrecision = nil&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			coords = formatCoordinates({&lt;br /&gt;
				coordinates = coordinates,&lt;br /&gt;
				geohack = geohack or get(&amp;quot;globe&amp;quot;) or &amp;quot;&amp;quot;,&lt;br /&gt;
				linkFlag = get(&amp;quot;globe&amp;quot;) ~= false,&lt;br /&gt;
				precision = precision or mapPrecision or &amp;quot;kątowo&amp;quot;,&lt;br /&gt;
				symbol = icon,&lt;br /&gt;
			})&lt;br /&gt;
		&lt;br /&gt;
			if coordinates  then&lt;br /&gt;
				local p = require(&amp;quot;Moduł:Współrzędne&amp;quot;).punkt({&lt;br /&gt;
					coordinates,&lt;br /&gt;
					[&amp;quot;opcje geohack&amp;quot;] = geohack,&lt;br /&gt;
					[&amp;quot;znak&amp;quot;] = mark,&lt;br /&gt;
					[&amp;quot;rozmiar znaku&amp;quot;] = markSize,&lt;br /&gt;
					[&amp;quot;opis&amp;quot;] = description,&lt;br /&gt;
					[&amp;quot;pozycja&amp;quot;] = position,&lt;br /&gt;
					alt = markalt,&lt;br /&gt;
					symbol = false,&lt;br /&gt;
				})&lt;br /&gt;
				--primaryPoint = true&lt;br /&gt;
				points = points and (p..points) or p&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local pointsData = decodePoints(points)&lt;br /&gt;
			if pointsData then&lt;br /&gt;
				adjustPointParams(pointsData, get(&amp;quot;globe&amp;quot;))&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			if not coords and pointsData and (#pointsData &amp;gt; 0) then&lt;br /&gt;
				icon = false&lt;br /&gt;
				coords = pointsData[1].display&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			-- tracking link, pseudo reference to primary map&lt;br /&gt;
			makeTrackingLinks(get, &amp;quot;primary&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			-- draw maps&lt;br /&gt;
			while map do&lt;br /&gt;
				map = nil&lt;br /&gt;
				-- draw map&lt;br /&gt;
				local mapWidth = tonumber(get(&amp;quot;rozmiar&amp;quot;)) or 238&lt;br /&gt;
				if mapWidth &amp;gt; 238 then&lt;br /&gt;
					mapWidth = 238&lt;br /&gt;
				elseif mapWidth &amp;lt; 100 then&lt;br /&gt;
					mapWidth = 100&lt;br /&gt;
				end&lt;br /&gt;
				local map1 = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
					:css( { margin=&amp;quot;0 auto&amp;quot;, [&amp;quot;text-align&amp;quot;]=&amp;quot;center&amp;quot;, width=tostring(mapWidth+4)..&amp;quot;px&amp;quot; } )&lt;br /&gt;
				map1:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
					:css( { [&amp;quot;font-weight&amp;quot;]= &amp;quot;bold&amp;quot;, color=&amp;quot;var(--color-subtle, #54595d);&amp;quot; } )&lt;br /&gt;
					:wikitext(&amp;quot;Położenie na mapie &amp;quot;, get(&amp;quot;dopełniacz&amp;quot;))&lt;br /&gt;
				drawMap(map1:tag(&amp;quot;div&amp;quot;):addClass(&amp;quot;mapa-lokalizacyjna&amp;quot;), get, mapWidth, 12.6, pointsData, coordinates, false)&lt;br /&gt;
				table.insert(result, &amp;#039;|- class=&amp;quot;infobox-locationmap&amp;quot; style=&amp;quot;background-color:var(--background-color-base, #fff); color:black; text-align:center; border-top:1px solid var(--border-color-base, #a2a9b1);&amp;quot;\n|colspan=&amp;quot;2&amp;quot;|&amp;#039;)&lt;br /&gt;
				table.insert(result, tostring(map1:allDone()))&lt;br /&gt;
				table.insert(result, &amp;quot;\n&amp;quot;)&lt;br /&gt;
				-- next parent&lt;br /&gt;
				if mapIndex &amp;lt; #maps then&lt;br /&gt;
					mapIndex = mapIndex + 1&lt;br /&gt;
					map = maps[mapIndex]&lt;br /&gt;
					get = loadMap(frame, map, variant)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if coords then&lt;br /&gt;
			table.insert(result, &amp;#039;|-\n|colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:var(--background-color-base, #fff); color:black; text-align:center; border-bottom:1px solid var(--border-color-base, #a2a9b1);&amp;quot;|&amp;#039;)&lt;br /&gt;
			table.insert(result, coords)&lt;br /&gt;
			if coordsRefs then&lt;br /&gt;
				table.insert(result, coordsRefs)&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(result, &amp;quot;\n&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if #result &amp;gt; 0 then&lt;br /&gt;
			table.insert(result, &amp;quot;|-&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(result)&lt;br /&gt;
	end,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;Thumb&amp;quot;] = function(frame)&lt;br /&gt;
		local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
			trim = true,&lt;br /&gt;
			removeBlanks = false,&lt;br /&gt;
			wrappers = &amp;quot;Szablon:Mapa lokalizacyjna&amp;quot;,&lt;br /&gt;
		})&lt;br /&gt;
		local map = args[&amp;quot;mapa&amp;quot;] or args[1] or &amp;quot;{{{1}}}&amp;quot;&lt;br /&gt;
		if #map == 0 then&lt;br /&gt;
			map = nil&lt;br /&gt;
		end&lt;br /&gt;
		local variant = args[&amp;quot;wariant&amp;quot;]&lt;br /&gt;
		local width = tonumber(args[&amp;quot;rozmiar&amp;quot;]) or 238&lt;br /&gt;
		local fontSize = tonumber(args[&amp;quot;font-size&amp;quot;]) or 12.6&lt;br /&gt;
		local align = args[&amp;quot;wyrównanie&amp;quot;] or &amp;quot;right&amp;quot;&lt;br /&gt;
		local footer = args[&amp;quot;podpis&amp;quot;]&lt;br /&gt;
		local alt = args[&amp;quot;alt&amp;quot;]&lt;br /&gt;
		local pointsData = decodePoints(args[&amp;quot;punkty mapy&amp;quot;])&lt;br /&gt;
		&lt;br /&gt;
		local get = loadMap(frame, map, variant)&lt;br /&gt;
		if pointsData then&lt;br /&gt;
			adjustPointParams(pointsData, get(&amp;quot;globe&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- tracking link, pseudo reference to this map&lt;br /&gt;
		makeTrackingLinks(get, &amp;quot;standalone&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local positionClass = {&lt;br /&gt;
			[&amp;quot;center&amp;quot;] = &amp;quot;center&amp;quot;,&lt;br /&gt;
			[&amp;quot;right&amp;quot;] = &amp;quot;tright&amp;quot;,&lt;br /&gt;
			[&amp;quot;left&amp;quot;] = &amp;quot;tleft&amp;quot;,&lt;br /&gt;
			[&amp;quot;&amp;quot;] = &amp;quot;tnone&amp;quot;,&lt;br /&gt;
		}&lt;br /&gt;
		local thumb = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:addClass(&amp;quot;thumb&amp;quot;)&lt;br /&gt;
			:addClass(positionClass[align] or align)&lt;br /&gt;
			:addClass(&amp;quot;panel-with-scroll&amp;quot;)&lt;br /&gt;
			:wikitext(&amp;#039;\n&amp;#039;)&lt;br /&gt;
		local thumbinner = thumb:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:addClass(&amp;quot;thumbinner&amp;quot;)&lt;br /&gt;
			:css({ width = tostring(width + 2)..&amp;quot;px&amp;quot; })&lt;br /&gt;
			:wikitext(&amp;#039;\n&amp;#039;)&lt;br /&gt;
		local border = thumbinner:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:css({ border = &amp;quot;1px solid #ccc&amp;quot;, width = tostring(width)..&amp;quot;px !important&amp;quot; })&lt;br /&gt;
		local builder = border:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			--:addClass(&amp;quot;mapa-lokalizacyjna&amp;quot;)&lt;br /&gt;
			:css({ margin = &amp;quot;0 auto&amp;quot;, width = tostring(width)..&amp;quot;px&amp;quot; })&lt;br /&gt;
		drawMap(builder, get, width, fontSize, pointsData, false, alt)&lt;br /&gt;
		if pointsData and (#pointsData == 1) and (mw.title.getCurrentTitle().namespace == 0) then&lt;br /&gt;
			builder:wikitext(&amp;quot;[[Kategoria:Mapa lokalizacyjna z jednym punktem]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		thumbinner&lt;br /&gt;
			:wikitext(&amp;#039;\n&amp;#039;)&lt;br /&gt;
		local thumbcaption = thumbinner:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:addClass(&amp;quot;thumbcaption&amp;quot;)&lt;br /&gt;
		thumbcaption:tag(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:addClass(&amp;quot;magnify&amp;quot;)&lt;br /&gt;
			:wikitext(&amp;quot;[[Plik:Geographylogo.svg|16x16px|link=Wikiprojekt:Szablony lokalizacyjne]]&amp;quot;)&lt;br /&gt;
		if footer and (#footer &amp;gt; 0) then&lt;br /&gt;
			thumbcaption:wikitext(footer)&lt;br /&gt;
		else&lt;br /&gt;
			thumbcaption:wikitext(&amp;quot;Położenie na mapie &amp;quot;, mw.text.nowiki(get(&amp;quot;dopełniacz&amp;quot;) or &amp;quot;&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
		thumbinner&lt;br /&gt;
			:wikitext(&amp;#039;\n&amp;#039;)&lt;br /&gt;
		thumb&lt;br /&gt;
			:wikitext(&amp;#039;\n&amp;#039;)&lt;br /&gt;
		return thumb:allDone()&lt;br /&gt;
	end,&lt;br /&gt;
	&lt;br /&gt;
	[&amp;quot;Inline&amp;quot;] = function(frame)&lt;br /&gt;
		local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
			trim = true,&lt;br /&gt;
			removeBlanks = false,&lt;br /&gt;
			wrappers = &amp;quot;Szablon:Mapa lokalizacyjna&amp;quot;,&lt;br /&gt;
		})&lt;br /&gt;
		local map = args[&amp;quot;mapa&amp;quot;] or args[1] or &amp;quot;{{{1}}}&amp;quot;&lt;br /&gt;
		if #map == 0 then&lt;br /&gt;
			map = nil&lt;br /&gt;
		end&lt;br /&gt;
		local variant = args[&amp;quot;wariant&amp;quot;]&lt;br /&gt;
		local width = tonumber(args[&amp;quot;rozmiar&amp;quot;]) or 238&lt;br /&gt;
		local fontSize = tonumber(args[&amp;quot;font-size&amp;quot;]) or 12.6&lt;br /&gt;
		local alt = args[&amp;quot;alt&amp;quot;]&lt;br /&gt;
		local pointsData = decodePoints(args[&amp;quot;punkty mapy&amp;quot;])&lt;br /&gt;
		&lt;br /&gt;
		local get = loadMap(frame, map, variant)&lt;br /&gt;
		if pointsData then&lt;br /&gt;
			adjustPointParams(pointsData, get(&amp;quot;globe&amp;quot;))&lt;br /&gt;
		end&lt;br /&gt;
			&lt;br /&gt;
		-- tracking link, pseudo reference to this map&lt;br /&gt;
		makeTrackingLinks(get, &amp;quot;standalone&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
		local builder = mw.html.create(&amp;quot;div&amp;quot;)&lt;br /&gt;
			:addClass(&amp;quot;mapa-lokalizacyjna&amp;quot;)&lt;br /&gt;
			:css({ margin =&amp;quot;0 auto&amp;quot;, width = tostring(width + 2)..&amp;quot;px&amp;quot;, padding = &amp;quot;3px&amp;quot;, margin = &amp;quot;3px&amp;quot; })&lt;br /&gt;
		drawMap(builder, get, width, fontSize, pointsData, false, alt)&lt;br /&gt;
		if pointsData and (#pointsData == 1) and (mw.title.getCurrentTitle().namespace == 0) then&lt;br /&gt;
			builder:wikitext(&amp;quot;[[Kategoria:Mapa lokalizacyjna z jednym punktem]]&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		return builder:allDone()&lt;br /&gt;
	end,&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>wpl&gt;Nux</name></author>
	</entry>
</feed>