Module:Carte
Apparence
[voir] [modifier] [historique] [purger]
Utilisation
Fonctions exportables :
fonction p.multimap()
permet de localiser un point sur une carte, ou sur plusieurs cartes. Cette fonction doit être appelée depuis un autre module. Elle est notamment utilisé par Module:Infobox pour géolocaliser l'article. Elle prend un seul argument, une table non nommée, qui prend elle-même les clés suivantes :
- maplist : (chaîne) la liste des cartes à utiliser, séparées par des slashs,par exemple "Paris/France"
- latitude : latitude de l'objet à géolocaliser
- longitude : longitude de l'objet à géolocaliser
- point : image à utiliser pour le point (par défaut file:Red pog.svg, voir Module:Carte/Points pour la liste complète).
- width : largeur de la carte
fonction p.map(frame)
appel de la fonction p.multimap, mais depuis le "frame"
Les cartes utilisées sont celles paramétrées dans les sous-pages de Module:Carte/données.
Voir aussi Module:Map
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (modifier).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local p = {}
local mapdatamod = require('Module:Données cartes')
local pointmod = require('Carte/Points')
function p.buildmap(map, maptype, width, latitude, longitude, pointtype, caption) -- fonction d'aige pour buildmap
if map == '-' then
return
end
local mapdata = mapdatamod.main(map)
if not mapdata or not mapdata.images then
addmaintenancecat('Page avec des données de géolocalisation non supportées')
return "carte non supportée: " .. map
end
local name = mapdata.name or '?'
if (not pointtype) then
pointtype = default
end
pointimage = pointmod[pointtype]
if not pointimage then pointimage = pointmod.default end -- + message d'erreur ?
-- analyse linguistique pour le texte de la carte
local datagender = mapdata.genre or ''
local gender = string.sub(datagender, 1, 1) -- les données cartes sont du format ms pour masucline singulier
local number = string.sub(datagender, 2, 2)
local determiner = mapdata.determiner
local ofstring = linguistic.of(name, gender, number, determiner) -- restitue "de France" ou "du Japon"
local pointsize = tostring(8)
local pointheight, pointwidth
if mapdata.projection == 'Projection équirectangulaire' then
pointheight = 100 * (latitude - mapdata.top) / (mapdata.bottom - mapdata.top)
pointwidth = 100 * (longitude - mapdata.left) / (mapdata.right - mapdata.left)
else
return "système cartographique non supporté"
end
if (pointheight > 100) or (pointwidth) > 100 or (pointheight < 0) or (pointwidth < 0) then
addmaintenancecat('Article avec une géolocalisation hors-carte') return 'lat: ' .. latitude .. '//' .. pointheight
end
local htmlheight = tostring(pointheight) .. '%'
local htmlwidth = tostring(pointwidth) .. '%'
local pointdiv = mw.html.create('div')
:css{position = 'absolute', border = 'none', top = htmlheight, left = htmlwidth}
:tag('div')
:css{position = 'absolute', top = '-4px', left = '-4px', ['line-height'] = '0'}
:wikitext('[[Image:' .. pointimage .. '|8px]]')
:done()
local mapname = mapdata.name
local file
if type(mapdata.images) == 'string' then
file = mapdata.images
else
file = mapdata.images[maptype] or mapdata.images[1] or mapdata.images['default']
end
local alt = 'voir sur la carte ' .. ofstring
local map = mw.html.create('div')
:css{['text-align'] = 'center'}
:addClass("geobox")
:wikitext('<small>Géolocalisation sur la carte ' .. ofstring .. '</small>')
:tag('table')
:addClass('DebutCarte')
:attr({border="0", cellspacing="0", cellpadding="0"})
:css({margin = '0', border = 'none', padding = '0'})
:tag('tr')
:tag('td')
:tag('div')
:css({position= 'relative', margin = "auto",})
:wikitext('[[Fichier:' .. file .. '|' .. width .. '|' .. alt .. ']]' )
:node(pointdiv)
:done()
:done()
:done()
:done()
return map
end
return p