MediaWiki:MapFrame.js

Материал из Wikivoyage

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • 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);