MediaWiki:Gadget-MapFrame.js

Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
  • Opera: premi Ctrl-F5.
/* Usage:
inserts an iframe into a div with id "mapdiv", in conjunction with Template:MapFrame for embeddable dynamic maps.
Relies on HTML5 data parameters.
*/					

function insertIFrame() {
	var exhtml = '//tools.wmflabs.org/wikivoyage/w/poimap2.php?';
	var map = $('div #mapdiv');
	map.each(function() {
		var self = this,
		$self = $(this);
		validateMap($self);
		var exsrc = exhtml+'lat='+$self.data("lat")+'&lon='+$self.data("long")
			+'&zoom='+$self.data("zoom")+'&layer='+$self.data("layer")+'&lang='+mw.config.get('wgContentLanguage')+'&name='+mw.config.get('wgPageName');
 
		var ifstr = '<iframe src="'+exsrc+'" width="'+$self.data("width")+'" height="'+$self.data("height")
			+'" style="border:0"></iframe>';
		$self.html(ifstr);
		if ( $self.data("layer").indexOf('M') < 0 ) {
			$('.vcard a').attr('href', function () { return this.href.replace('layer=M','layer='+$self.data("layer")[0]) });
		}
	});
}

function validateMap(map) {
	if (!$.isNumeric(map.data("lat"))) map.data("lat", 51.47766);
	if (!$.isNumeric(map.data("long"))) map.data("long", -0.00115);
	if (!$.isNumeric(map.data("zoom")) && map.data("zoom") != 'auto') map.data("zoom", 14);
	if (!$.isNumeric(map.data("height"))) map.data("height", 420);
	if (!$.isNumeric(map.data("width"))) map.data("width", 420);
	if (map.data("layer").length > 8) map.data("layer", 'M');
}

jQuery(document).ready(insertIFrame);