Modul:Interaktivna karta

Izvor: Hrvatska internetska enciklopedija
Inačica 754280 od 15. travanj 2026. u 12:49 koju je unio WikiSysop (razgovor | doprinosi)
(razl) ←Starija inačica | vidi trenutačnu inačicu (razl) | Novija inačica→ (razl)
Prijeđi na navigaciju Prijeđi na pretraživanje
Dokumentacija modula
Modul koji pokreće {{Interaktivna karta}}, drugih imena {{Mapframe}} i {{Maplink}}.


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"

   -- Dio unutar funkcije p.karta
    local markers = {}
    for i = 1, 10 do
        local m = args["marker" .. i]
        if m and m ~= "" then
            -- marker1=45.8,15.9,Zagrebačka katedrala
            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