MediaWiki:Gadget-CoordinateDiffMap.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
( function ( mw, $ ) {

	if ( !$( '#mw-content-text .diff' ).length || !$( 'table.wb-globe-details' ).length ) {
		return;
	}

	$( 'table.wb-globe-details' ).each( function ( i ) {
		var globe = $( this ).find( 'td.wb-globe-globe a' ).attr( 'href' );
		if ( globe !== 'http://www.wikidata.org/entity/Q2' ) {
			return;
		}

		$( this ).addClass( 'coordinatediffmap' );

		$( this ).find( 'tbody' ).append( '<tr><td colspan=2><div id="coordinatediffmap' + i + '" class="map"></div></td></tr>' );
		var lat = $( this ).find( 'td.wb-globe-latitude' ).text();
		var lon = $( this ).find( 'td.wb-globe-longitude' ).text();
		var precision = $( this ).find( 'td.wb-globe-precision' ).text();
		precision = 360 / parseFloat( precision, 10 ) / 120;
		var zoom = Math.floor( Math.log( precision ) / Math.log( 2 ) );
		zoom = zoom > 18 ? 18 : zoom;
		var map = L.map( 'coordinatediffmap' + i ).setView( [ lat, lon ], zoom );

		L.tileLayer( 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png', {
			attribution: 'Map data &copy; <a href="https://openstreetmap.org/copyright">OSM</a> contributors',
			maxZoom: 18
		} ).addTo( map );

		L.marker( [ lat, lon ] ).addTo( map );
	} );

}( mediaWiki, jQuery ) );