Jump to content

Module:Coordinates

From UoB Wiki

Documentation for this module may be created at Module:Coordinates/doc

require('strict')

local getArgs = require('Module:Arguments').getArgs
local coordinates = {}
local coord_link = 'https://geohack.toolforge.org/geohack.php'

function coordinates.coord(frame)
	local args = getArgs(frame, {
		wrappers = 'Template:Coord'
	})
	return coordinates._coord(args)
end
-- Only accepts decimal degrees coordinates eg. {{#invoke:Coordinates|coord|26.047889|N|50.509947|E}}
function coordinates._coord(args)
	local latitude = args[1]
	local latitude_dir = args[2]
	local longitude = args[3]
	local longitude_dir = args[4]
	-- dimension of object in meters (for geohack to estimate zoom level)
	local dim = 300
	if tonumber(args.dim) ~= nil then
		dim = args.dim
	end
	
	local coord_text = string.format('%s°%s %s°%s', latitude, latitude_dir, longitude, longitude_dir)
	local text = string.format(
		'<span class="plainlinks">[%s?params=%s_%s_%s_%s_dim:%s %s]</span>', 
		coord_link,
		latitude,
		latitude_dir,
		longitude,
		longitude_dir,
		dim,
		coord_text
	)

	return text
end
	
return coordinates