Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Mapframe/simple
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} local Mapframe = require('Module:Mapframe') -- This function was imported from [[Module:Maplink]], should probably be "required" instead function parseCoords(coords) local parts = mw.text.split((mw.ustring.match(coords,'[_%.%d]+[NS][_%.%d]+[EW]') or ''), '_') local lat_d = tonumber(parts[1]) local lat_m = tonumber(parts[2]) -- nil if coords are in decimal format local lat_s = lat_m and tonumber(parts[3]) -- nil if coords are either in decimal format or degrees and minutes only local lat = lat_d + (lat_m or 0)/60 + (lat_s or 0)/3600 if parts[#parts/2] == 'S' then lat = lat * -1 end local long_d = tonumber(parts[1+#parts/2]) local long_m = tonumber(parts[2+#parts/2]) -- nil if coords are in decimal format local long_s = long_m and tonumber(parts[3+#parts/2]) -- nil if coords are either in decimal format or degrees and minutes only local long = long_d + (long_m or 0)/60 + (long_s or 0)/3600 if parts[#parts] == 'W' then long = long * -1 end return lat, long end -- Entry point for templates function p.main(frame) local parent = frame.getParent(frame) local output = p._main(parent.args) return frame:preprocess(output) end -- Entry point for modules function p._main(_args) local targs = {} local pins = {} local del = _args['delimiter'] or '<>' local post_title_offset = _args['has_jurisdiction_metadata'] and 1 or 0 local jurisdiction_filter = _args['jurisdiction_filter'] for k,v in pairs(_args) do if k then k = tostring(k) if k:match('^%s*%d+%s*$') then local vals = mw.text.split(v, '%s*' .. del .. '%s*') local title = vals[1 ] or '' local coord = vals[2 + post_title_offset] or '' local mtype = vals[3 + post_title_offset] or _args['type'] or 'point' local markr = vals[4 + post_title_offset] or _args['marker'] or '' local msize = vals[5 + post_title_offset] or _args['marker-size'] or '' local mcolr = vals[6 + post_title_offset] or _args['marker-color'] or '' local lat,lon = parseCoords(coord) lat,lon = tonumber(lat),tonumber(lon) if jurisdiction_filter then local jurisdiction = vals[2] if mw.ustring.match(jurisdiction, jurisdiction_filter, 1) then table.insert(pins, {lat or 90, lon or -180, title, coord, mtype, markr, msize, mcolr}) end else table.insert(pins, {lat or 90, lon or -180, title, coord, mtype, markr, msize, mcolr}) end elseif k == 'delimiter' or k == 'type' or k == 'marker' or k == 'marker-size' or k == 'marker-color' or k:match('%d%s$') then else targs[k] = v end end end table.sort(pins, function (a, b) return a[1] > b[1] or (a[1] == b[1] and a[2] < b[2]) end) for k,v in ipairs(pins) do if k == 1 then k = '' end targs['title' .. k] = v[3] ~= '' and v[3] targs['coord' .. k] = v[4] ~= '' and v[4] targs['type' .. k] = v[5] ~= '' and v[5] targs['marker' .. k] = v[6] ~= '' and v[6] targs['marker-size' .. k] = v[7] ~= '' and v[7] targs['marker-color' .. k] = v[8] ~= '' and v[8] end return Mapframe._main(targs) end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Mapframe/simple/doc
(
edit
)