MediaWiki:MapFrame.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
/* Place importScript('MediaWiki:MapFrame.js'); into MediaWiki:Common.js */
/* 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 map = $('#mapdiv');
if ( map.length ) {
validateMap(map);
if (map.data("type") == 1 || map.data("type") == 2 || map.data("type") == 3 || map.data("type") == 4) {
var exhtml = '//ru-monuments.toolforge.org/monmap/index.htm?';
} else {
var exhtml = '//wikivoyage.toolforge.org/w/poimap2.php?';
}
if (map.data("type") == 2 || map.data("type") == 3 || map.data("type") == 4) {
if (map.data("monmapname")) {
var exsrc = exhtml+'name='+map.data("monmapname");
} else if (map.data("type") == 4) {
var exsrc = exhtml+'name-prefix-parts='+mw.config.get('wgPageName').split('(')[0];
} else if (map.data("type") == 2) {
var exsrc = exhtml+'name-prefix='+mw.config.get('wgPageName');
} else {
var exsrc = exhtml+'name='+mw.config.get('wgPageName');
}
var exsrc = exsrc+'&no-group-markers=true&districtid='+map.data("districtid")+'&lat='+map.data("lat")+'&long='+map.data("long")+'&zoom='+map.data("zoom")+'&show-address='+map.data("show-address");
} else {
var exsrc = exhtml+'name='+mw.config.get('wgPageName')+'&no-group-markers=true';
}
var ifstr = '<iframe src="'+exsrc+'" width="'+map.data("width") +'" height="'+map.data("height") +'" style="border:0; width:100%"></iframe>';
map.html(ifstr);
if ( map.data("layer").indexOf('O') < 0 ) {
$('.vcard a').attr('href', function () { return this.href.replace('layer=M','layer='+map.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", 14);
if (!$.isNumeric(map.data("height"))) map.data("height", 420);
if (!$.isNumeric(map.data("width"))) map.data("width", 420);
if (!$.isNumeric(map.data("type"))) map.data("type", 0);
if (map.data("layer").length > 8) map.data("layer", 'M');
}
$(document).ready(insertIFrame);