Toggle search
Search
Toggle menu
notifications
Toggle personal menu
Editing
Module:Marker
From Dive Atlas
Views
Read
Edit source
View history
associated-pages
Module
Discussion
More actions
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!
--[[ Source script: https://it.wikivoyage.org/wiki/Modulo:Marker Maintainer: Andyrom75 Lazy loads: require('Module:WikidataIB').getSiteLink ]] local coord2Dec = require('Module:Coordinates').toDec local type2color = require('Module:TypeToColor').convertImpl local function _isDefined(s) return s ~= '' and s end local function _makeMarkerSymbol( args, frame ) local image4map = _isDefined(args.image) and ('[[File:' .. args.image .. '|300px]]') or '' local tagArgs = { zoom = tonumber( args.zoom ), latitude = tonumber( args.lat ), longitude = tonumber( args.long ), show = args.show, group = args.group, description = (_isDefined(args.description) or '') .. image4map } if _isDefined( args.text ) then tagArgs.text = args.text if not args.useIcon then tagArgs.class = 'no-icon' end end local geoJson = { type = 'Feature', geometry = { type = 'Point', coordinates = { tagArgs.longitude, tagArgs.latitude } }, properties = { title = args.name, description = tagArgs.description, ['marker-symbol'] = args.symbol, ['marker-color'] = args.color, ['marker-size'] = 'medium', } } -- frame:extensionTag is expensive return frame:extensionTag( 'maplink', mw.text.jsonEncode( geoJson ), tagArgs ) end local function _Marker(frame) local args = frame.args local imageErrMsg = '' --shortcut variable local nome = args.name or '' local tag = ((args.islisting ~= 'yes') and mw.html.create( 'span' ):addClass( 'vcard' )) or mw.html.create() local anchor = '' if _isDefined( args.wikidata ) then -- Se manca una delle due coordinate, provo a estrarle entrambe da Wikidata if not _isDefined(args.lat) or not _isDefined(args.long) then local coords = mw.wikibase.getBestStatements( args.wikidata, 'P625') if coords[1] then args.lat = coords[1].mainsnak.datavalue.value.latitude args.long = coords[1].mainsnak.datavalue.value.longitude end end -- Se non Γ¨ stata fornita l'immagine, provo a estrarla da Wikidata if not _isDefined(args.image) then local image = mw.wikibase.getBestStatements( args.wikidata, 'P18') args.image = image[1] and image[1].mainsnak.datavalue.value end end -- Se sono presenti le coordinate creo il marker tag if args.lat ~= 'NA' and args.long ~= 'NA' then if _isDefined(args.lat) and _isDefined(args.long) then -- arguments setup args.lat = coord2Dec(args.lat or 0, '', 6).dec args.long = coord2Dec(args.long or 0, '', 6).dec args.type = _isDefined(args.type) or 'listing' args.zoom = _isDefined(args.zoom) or '17' args.group = _isDefined(args.group) or args.type args.symbol = '-number-' .. ( args.counter or args.type or 'listing' ) args.color = type2color( args.type ) args.show = args.show or 'mask,around,buy,city,do,drink,eat,go,listing,other,see,sleep,vicinity,view' local mapTagOutput = _makeMarkerSymbol( args, frame ) tag:tag( 'span' ) :addClass( 'noprint listing-coordinates' ) :css('display','none') :tag( 'span' ) :addClass( 'geo' ) :tag( 'abbr' ) :addClass( 'latitude' ) :wikitext( args.lat ) :done() :tag( 'abbr' ) :addClass( 'longitude' ) :wikitext( args.long ) :allDone() :tag( 'span' ) :attr( 'title', 'See this element on the map' ) :wikitext( mapTagOutput ) else local listingTypes = {see=true, eat=true, buy=true, drink=true, sleep=true, ['do']=true, go=true, city=true, vicinity=true} if mw.title.getCurrentTitle().namespace == 0 and args.type and listingTypes[string.lower(args.type)] then anchor = anchor .. "[[Category:" .. string.lower(args.type) .. " listing with no coordinates]]" end end end -- costruisco l'ancora sul nome ed eventualmente gli associo il sitoweb if nome ~= '' then local anchor2 = '' anchor2 = '<span id="' .. mw.uri.anchorEncode( nome ) .. '" class="fn org listing-name" style="font-weight:bold;">' .. nome .. '</span>' -- se includo un sito web il nome deve essere puramente testuale if _isDefined(args.url) then anchor2 = string.match(nome, '%[%[') and ('[[Category:Listing without plain text name]]' .. anchor2) or ('[' .. args.url .. ' ' .. anchor2 .. ']') end anchor = anchor .. anchor2 end if mw.title.getCurrentTitle().namespace == 0 then anchor = anchor .. '[[Category:Has map markers]]' end -- Se l'immagine fornita non esiste genero un messaggio di errore if _isDefined( args.image ) then local image = 'Media:' .. args.image if mw.title.new( image ) and mw.title.new( image ).exists == true then args.description = '[[' .. image .. '|100x100px|' .. nome .. ']]' else imageErrMsg = mw.html.create( 'span' ) :addClass('imageinfo debuginfo') :css('display','none') :wikitext( 'NOT EXISTING LISTING IMAGE' ) end end if (args.islisting ~= 'yes') and _isDefined( args.wikidata ) then local getSiteLink = require('Module:WikidataIB').getSiteLink if _isDefined( getSiteLink{args={wiki='enwikivoyage', qid=args.wikidata}} ) then anchor = anchor .. (string.match(nome, '%[%[') and '' or '[[Category:Marker with Wikivoyage article but no wikilink]]') else local wpLink = _isDefined( getSiteLink{args={wiki='enwiki', qid=args.wikidata}} ) anchor = anchor .. (wpLink and '<span class="listing-sister-icons"> [[File:Antu wikipedia.svg|15px|class=listing-sister|link=w:' .. wpLink .. '|<span>' .. wpLink .. '</span> on Wikipedia]]</span>' or '') end end return tostring(tag:node(imageErrMsg):wikitext(' ' .. anchor)) end --Interfacce del modulo local p = {} function p.MarkerTemplate(frame) return _Marker(frame:getParent()) end function p.MarkerInvoke(frame) return _Marker(frame) end function p.MarkerModule(frame) local Cframe = mw.getCurrentFrame() Cframe.args = frame.args return _Marker(Cframe) end return p
Summary:
Please note that all contributions to Dive Atlas 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
Meta:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Marker/doc
(
edit
)