Hoppa till innehållet

MediaWiki:Gadget-mapframe.js

Från Wikipedia
Version från den 1 april 2018 kl. 00.15 av Nirmos (Diskussion | Bidrag) (Dynamiskt genererad inzoomningsnivå baserad på koordinaters noggrannhet (av Larske (Special:PermaLink/42663543)).)

OBS: Efter du har publicerat sidan kan du behöva tömma din webbläsares cache för att se ändringarna.

  • Firefox / Safari: Håll ned Skift och klicka på Uppdatera sidan eller tryck Ctrl-F5 eller Ctrl-R (⌘-R på Mac)
  • Google Chrome: Tryck Ctrl-Skift-R (⌘-Skift-R på Mac)
  • Edge Håll ned Ctrl och klicka på Uppdatera eller tryck Ctrl-F5.
  • Opera: Tryck Ctrl-F5.
//<nowiki>
$( function() {
	'use strict';
	var coords = $( '#coordinates' );
	var computedcoords = coords.find( '.geo' );
	var hasInfobox;
	var container = $( '#mw-content-text' ).find( '.mw-parser-output' );
	if ( $( '.infobox' ).length ) {
		hasInfobox = true;
	}
	if ( computedcoords.length === 1 && $( '.mw-kartographer-container' ).length === 0 ) {
		mw.loader.using( 'ext.kartographer.frame', function() {
			var computedcoordstext = computedcoords.text();
			if ( computedcoordstext ) {
				var arr = computedcoordstext.split( '; ' );
				if ( arr.length === 2 ) {
					var lat = arr[ 0 ];
					var lon = arr[ 1 ];
					var str = '<mapframe ';
					var zoom;
					var userdefinedcoords = coords.find( '.geo-dms' );
					var userdefinedcoordstext;
					var numberofdigits;
					if ( userdefinedcoords.length === 1 ) {
						userdefinedcoordstext = userdefinedcoords.text();
						numberofdigits = userdefinedcoordstext.match( /[°′″]/g ).length * 2 + userdefinedcoordstext.length - userdefinedcoordstext.replace( /(\.)\d+/g, '$1' ).length;
						if ( numberofdigits > 17 ) {
							zoom = '19';
						} else if ( numberofdigits > 16 ) {
							zoom = '18';
						} else if ( numberofdigits > 15 ) {
							zoom = '17';
						} else if ( numberofdigits > 14 ) {
							zoom = '16';
						} else if ( numberofdigits > 13 ) {
							zoom = '15';
						} else if ( numberofdigits > 12 ) {
							zoom = '14';
						} else if ( numberofdigits > 11 ) {
							zoom = '13';
						} else if ( numberofdigits > 10 ) {
							zoom = '12';
						} else if ( numberofdigits > 9 ) {
							zoom = '11';
						} else if ( numberofdigits > 8 ) {
							zoom = '10';
						} else if ( numberofdigits > 7 ) {
							zoom = '9';
						} else if ( numberofdigits > 6 ) {
							zoom = '8';
						} else if ( numberofdigits > 5 ) {
							zoom = '7';
						} else if ( numberofdigits > 4 ) {
							zoom = '6';
						} else {
							zoom = '1';
						}
						if ( hasInfobox ) {
							str += 'frameless';
						} else {
							str += 'text="{{SUBPAGENAME}}"';
						}
						str += ' width=250 height=250 zoom=' + zoom + ' longitude=' + lon + ' latitude=' + lat + ' />';
						( new mw.Api() ).get( {
							action: 'parse',
							title: mw.config.get( 'wgPageName' ),
							text: str,
							prop: 'text',
							formatversion: 2
						} ).done( function( data ) {
							var html = $( data.parse.text );
							var map = html.find( '.mw-kartographer-container' );
							if ( hasInfobox ) {
								map = map.wrap( '<tr><td colspan="3"></td></tr>' ).parent().parent();
								$( '.infobox' ).find( 'tbody' ).first().append( map );
								$( '.mw-kartographer-map' ).removeClass( 'floatright' );
								$( '.mw-kartographer-map' ).css( 'margin', '0 auto' );
							} else {
								if ( container.children( 'p' ).length ) {
									container.children( 'p' ).first().before( map );
								} else {
									container.prepend( map );
								}
							}
							mw.hook( 'wikipage.content' ).fire( map );
						} );
					}
				}
			}
		} );
	}
} );
//</nowiki>