ഘടകം:Slippymap/sandbox
ഈ ഘടകത്തിന്റെ വിവരണം ഘടകം:Slippymap/sandbox/വിവരണം എന്ന താളിൽ നിർമ്മിക്കാവുന്നതാണ്
local p = {}
-- Function to clean input values by trimming spaces and handling nil values
local function clean(input)
return input and mw.text.trim(input) or nil
end
function p.slippymap(frame)
local args = (frame:getParent() or frame).args
-- Extract and process map options from arguments
local options = {
latitude = tonumber(clean(args.lat)) or 51.3432699,
longitude = tonumber(clean(args.lon)) or 0.52700328,
height = tonumber(clean(args.height)) or 400,
width = clean(args.width) == "full" and "full" or tonumber(clean(args.width)) or 400,
zoom = tonumber(clean(args.zoom)) or 12,
align = clean(args.alignment) or "center",
text = clean(args.text), -- Use provided text, no default value here
marker = clean(args.marker) ~= "no",
}
-- Generate GeoJSON content if the marker is enabled
local content = nil
if options.marker then
content = mw.text.jsonEncode({
type = "FeatureCollection",
features = {
{
type = "Feature",
geometry = {
type = "Point",
coordinates = { options.longitude, options.latitude },
},
properties = {
title = options.text or "Marker", -- Popup text set to `args.text`, fallback is "Marker"
icon = {
iconUrl = "//schoolwiki.in/images/5/5f/63rd_state_kalolsavam_logo.png", -- Custom marker image
iconSize = { 50, 50 }, -- Width and height of the icon
iconAnchor = { 25, 50 }, -- Anchor point (center bottom of the icon)
popupAnchor = { 0, -50 }, -- Popup anchor position
},
},
},
},
})
end
-- Return the mapframe tag with content and options
return frame:extensionTag {
name = "mapframe",
content = content,
args = {
latitude = options.latitude,
longitude = options.longitude,
height = options.height,
width = options.width,
zoom = options.zoom,
align = options.align,
},
}
end
return p