Modul:Interaktivna karta: razlika između inačica
Prijeđi na navigaciju
Prijeđi na pretraživanje
mNema sažetka uređivanja |
mNema sažetka uređivanja |
||
| Redak 2: | Redak 2: | ||
function p.karta(frame) | function p.karta(frame) | ||
local | -- Dohvaćanje argumenata iz predloška ili direktnog poziva | ||
local args = frame:getParent().args | |||
if not args.lat then args = frame.args end -- fallback | |||
local width = args.width or args.sirina or " | local width = args.width or args.sirina or "600px" | ||
local height = args.height or args.visina or "400px" | local height = args.height or args.visina or "400px" | ||
local lat = | local lat = args.lat or "45.81" | ||
local lon = | local lon = args.lon or "15.98" | ||
local zoom = | local zoom = args.zoom or "12" | ||
-- Prikupljanje markera (marker1, marker2, itd.) | |||
local markers = {} | local markers = {} | ||
for | for i = 1, 10 do -- Prolazi kroz marker1 do marker10 (možeš i više) | ||
local m = args["marker" .. i] | |||
table.insert(markers, | if m and m ~= "" then | ||
table.insert(markers, m) | |||
end | end | ||
end | end | ||
local divId = " | -- Generiranje unikatnog ID-a bez oslanjanja na math.random | ||
-- Koristimo mw.hash ili jednostavno fiksni string s unikatom | |||
local divId = "leaflet_map_" .. mw.ustring.sub(mw.hash.hashValue('md5', tostring(lat) .. tostring(lon)), 1, 8) | |||
local container = mw.html.create("div") | local container = mw.html.create("div") | ||
| Redak 25: | Redak 30: | ||
:css("width", width) | :css("width", width) | ||
:css("height", height) | :css("height", height) | ||
:css("background", "#eee") -- Dodano da vidiš okvir čak i ako karta zapne | |||
:attr("data-lat", lat) | :attr("data-lat", lat) | ||
:attr("data-lon", lon) | :attr("data-lon", lon) | ||
Inačica od 15. travanj 2026. u 11:39
Dokumentacija modula
local p = {}
function p.karta(frame)
-- Dohvaćanje argumenata iz predloška ili direktnog poziva
local args = frame:getParent().args
if not args.lat then args = frame.args end -- fallback
local width = args.width or args.sirina or "600px"
local height = args.height or args.visina or "400px"
local lat = args.lat or "45.81"
local lon = args.lon or "15.98"
local zoom = args.zoom or "12"
-- Prikupljanje markera (marker1, marker2, itd.)
local markers = {}
for i = 1, 10 do -- Prolazi kroz marker1 do marker10 (možeš i više)
local m = args["marker" .. i]
if m and m ~= "" then
table.insert(markers, m)
end
end
-- Generiranje unikatnog ID-a bez oslanjanja na math.random
-- Koristimo mw.hash ili jednostavno fiksni string s unikatom
local divId = "leaflet_map_" .. mw.ustring.sub(mw.hash.hashValue('md5', tostring(lat) .. tostring(lon)), 1, 8)
local container = mw.html.create("div")
:attr("id", divId)
:addClass("leaflet-map")
:css("width", width)
:css("height", height)
:css("background", "#eee") -- Dodano da vidiš okvir čak i ako karta zapne
:attr("data-lat", lat)
:attr("data-lon", lon)
:attr("data-zoom", zoom)
:attr("data-markers", table.concat(markers, ";"))
return tostring(container)
end
return p