Modul:Karte

Version vom 8. Dezember 2025, 23:18 Uhr von HeikoBot (Diskussion | Beiträge) (+ subobjects)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Unterseiten


p = {}

local com = require("Modul:Common")
local str = require("Modul:String")

function p.karte(frame, args)
	mw.log("karte(frame, args)")
	mw.logObject(args, "args")
	local t = ""

	if (args["lat"] ~= nil and args["lon"] ~= nil) or
		args["location"] ~= nil or args["locationlist"] ~= nil or
		args["geojson"] ~= nil then

		-- geocode location and locationlist
		local subobjects = {}
		local minimum_one_geocode_ok = false
		if not com.isTrue(args["Ehemals"]) then
			local loc = str.splitAndStrip(args["locationlist"] or "", ";")
			if args["location"] ~= nil then
				table.insert(loc, args["location"])
			end
			for _, l in ipairs(loc) do
				local subobject_entry = {}
				subobject_entry["Geolokation"] = l
				local geocode = frame:callParserFunction("#geocode", l)
				if geocode ~= "Geocoding failed" then
					subobject_entry["Geokoordinate"] = geocode
					minimum_one_geocode_ok = true
				end
				table.insert(subobjects, subobject_entry)
			end
		end

		-- geocode lon/lat
		if (not minimum_one_geocode_ok or com.isTrue(args["Ehemals"])) and args["lat"] ~= nil and args["lon"] ~= nil then
			local geocode = frame:callParserFunction("#geocode", args["lat"] .. "," .. args["lon"])
			if geocode ~= "Geocoding failed" then
				local subobject_entry = {}
				subobject_entry["Geokoordinate"] = geocode
				one_geocode_ok = true
				table.insert(subobjects, subobject_entry)
			end
		end
		mw.logObject(subobjects, "subobjects")
		
		-- subobjects setzen
		for _, s in ipairs(subobjects) do
			s["SubObjektTyp"] = "Geo"
			mw.smw.subobject(s, s["Geolokation"] or s["Geokoordinate"])
		end

		t = frame:expandTemplate{title = "Karte", args = args}
	end

	mw.logObject(t, "t")
	return t
end

return p