Modul:Interaktivna karta: razlika između inačica

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje
m Zamijenjen sadržaj stranice s »local p = {} function p.karta(frame) local parent = frame:getParent() or frame local args = parent.args or parent local width = args.width or args.sirina or "100%" local height = args.height or args.visina or "400px" local lat = tonumber(args.lat) or 45.8 local lon = tonumber(args.lon) or 15.9 local zoom = tonumber(args.zoom) or 10 local markers = {} for k, v in pairs(args) do if type(k) == "string...«
Oznaka: zamijenjeno preko 90 % teksta
mNema sažetka uređivanja
Redak 36: Redak 36:
     end
     end


    local script = mw.getCurrentFrame():extensionTag{
local script = mw.getCurrentFrame():extensionTag(
        name = "script",
    'script',
        content = string.format([[
    string.format([[
            (function() {
(function() {
                if (typeof L === 'undefined') return;
    if (typeof L === 'undefined') return;
                var map = L.map('%s').setView([%f, %f], %d);
    var map = L.map('%s').setView([%f, %f], %d);
                L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
    L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
                    maxZoom: 19,
        maxZoom: 19,
                    attribution: '© OpenStreetMap'
        attribution: '© OpenStreetMap'
                }).addTo(map);
    }).addTo(map);
                %s
    %s
            })();
})();
        ]],
]], divId, lat, lon, zoom, table.concat(markerJs, "\n"))
        divId, lat, lon, zoom,
)
        table.concat(markerJs, "\n"))
    }


     return tostring(html) .. tostring(script)
     return tostring(html) .. tostring(script)

Inačica od 15. travanj 2026. u 11:17

Dokumentacija modula
Modul koji pokreće {{Interaktivna karta}}, drugih imena {{Mapframe}} i {{Maplink}}.


local p = {}

function p.karta(frame)
    local parent = frame:getParent() or frame
    local args = parent.args or parent

    local width  = args.width  or args.sirina or "100%"
    local height = args.height or args.visina or "400px"
    local lat    = tonumber(args.lat)  or 45.8
    local lon    = tonumber(args.lon)  or 15.9
    local zoom   = tonumber(args.zoom) or 10

    local markers = {}
    for k, v in pairs(args) do
        if type(k) == "string" and k:match("^marker") then
            local lat2, lon2 = v:match("([^,]+),([^,]+)")
            if lat2 and lon2 then
                table.insert(markers, {tonumber(lat2), tonumber(lon2)})
            end
        end
    end

    local divId = "map_" .. math.random(1000000, 9999999)

    local html = mw.html.create("div")
    html:attr("id", divId)
        :css("width", width)
        :css("height", height)

    local markerJs = {}
    for _, m in ipairs(markers) do
        table.insert(markerJs, string.format(
            "L.marker([%f, %f]).addTo(map);",
            m[1], m[2]
        ))
    end

local script = mw.getCurrentFrame():extensionTag(
    'script',
    string.format([[
(function() {
    if (typeof L === 'undefined') return;
    var map = L.map('%s').setView([%f, %f], %d);
    L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
        maxZoom: 19,
        attribution: '© OpenStreetMap'
    }).addTo(map);
    %s
})();
]], divId, lat, lon, zoom, table.concat(markerJs, "\n"))
)

    return tostring(html) .. tostring(script)
end

return p