Benutzer:Dschwen/wikiminiatlas2.js
aus Wikipedia, der freien Enzyklopädie
Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen zu sehen: Mozilla/Firefox: Shift-Strg-R, Internet Explorer: Strg-F5, Opera: F5, Safari: ⌘-R, Konqueror: Strg-R.
// [[image:Erioll_world.svg|18px]] '''WikiMiniAtlas''' <br> // Script to embed interactive maps into pages that have coordinate templates <br> // also check my commons page [[:commons:User:Dschwen]] for more tools<pre> var wikiminiatlas = { config: { width : 500, height : 300, zoom : 1, iframeurl : 'http://tools.wikimedia.de/~dschwen/wikiminiatlas/iframe.html', imgbase : 'http://tools.wikimedia.de/~dschwen/wikiminiatlas/tiles/', coordurl : 'http://tools.wikimedia.de/~magnus/geo/geohack.php?', buttonImage: 'http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Erioll_world.svg/18px-Erioll_world.svg.png' }, strings: { buttonTooltip : { da:'Vis stedet på kortet', de:'Ort auf interaktiver Karteanzeigen', en:'show location on an interactive map', eu:'erakutsi kokalekua mapa interaktibo batean', es:'mostrar el lugar en un mapa interactivo', fr:'Montrer la localisation sur une carte interactive', it:'mostra la località su una carta interattiva', ja:'インタラクティブ地図上に位置を表示', nl:'toon de locatie op een interactieve kaart', pl:'Pokaż lokalizację na mapie interaktywnej', pt:'mostrar a localidade num mapa interactivo', ru:'показать положение на интерактивной карте' }, close : { da:'Luk', de:'schließen', en:'close', eu:'itxi', es:'cerrar', fr:'Quitter', it:'chiudi', ja:'閉じる', nl:'sluiten', pl:'zamknij', pt:'fechar', ru:'закрыть' } }, link : null, links : null, language : '', iframe : { div: null, iframe: null, closebutton: null}, mapbutton: null, marker : { lat:0, lon:0 }, coordinates : null, coord_index: 0, coord_params: '', coord_filter: null, region_index : 0, coordinate_region : '', WikiMiniAtlasHTML : '', // cross-browser event attachment (John Resig) // http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html addEvent : function ( obj, type, fn ) { if (obj.addEventListener) obj.addEventListener( type, fn, false ); else if (obj.attachEvent) { obj["e"+type+fn] = fn; obj[type+fn] = function() { obj["e"+type+fn]( window.event ); } obj.attachEvent( "on"+type, obj[type+fn] ); } }, // vertikale position auf der Seite bestimmen totalOffset : function( obj, offset ) { if( obj.offsetParent == null || obj.offsetParent.id == 'content' ) return offset + obj.offsetTop; else return wikiminiatlas.totalOffset(obj.offsetParent, offset + obj.offsetTop ); }, // move iframe around and toggle visibility toggleIFrame : function( e ) { with(wikiminiatlas) { var newurl = config.iframeurl + '?' + this.mapparam; if(iframe.div.style.visibility != "visible" || ( ( iframe.iframe.src != newurl ) && ( this.mapparam != '' ) ) ) { if( iframe.iframe.src != newurl ) { iframe.iframe.src = newurl; } iframe.div.style.top = (totalOffset( this, 0 ) + 20 ) + 'px'; iframe.div.style.visibility="visible"; } else iframe.div.style.visibility="hidden"; } return false; }, // Insert the IFrame into the page. loader : function() { // apply settings if( typeof(wma_settings) == 'object' ) for (var key in wma_settings) { if( typeof(wma_settings[key]) == typeof(wikiminiatlas.config[key]) ) wikiminiatlas.config[key] = wma_settings[key]; } with(wikiminiatlas) { language = window.location.host.substr(0,2); links = document.getElementsByTagName('a'); for( var key in links ) { link = links[key]; if( link.href && ( link.href.substr(0,config.coordurl.length) == config.coordurl ) ) { coordinates = link.href; coord_index = coordinates.indexOf('params='); if(coord_index>-1) { coord_params = coordinates.substr(coord_index+7); // degrees coord_filter = /([\d+-.]+)_([NS])_([\d+-.]+)_([EOW])_/; if(coord_filter.test(coord_params)) { coord_filter.exec(coord_params); marker.lat=RegExp.$1; if(RegExp.$2=='S') marker.lat*=-1; marker.lon=RegExp.$3; if(RegExp.$4=='W') marker.lon*=-1; } // degrees, minutes coord_filter = /([\d+-.]+)_([\d+-.]+)_([NS])_([\d+-.]+)_([\d+-.]+)_([EOW])_/; if(coord_filter.test(coord_params)) { coord_filter.exec(coord_params); marker.lat=(1.0*RegExp.$1) + (RegExp.$2/60.0); if(RegExp.$3=='S') marker.lat*=-1; marker.lon=(1.0*RegExp.$4) + (RegExp.$5/60.0); if(RegExp.$6=='W') marker.lon*=-1; } // degrees, minutes, seconds coord_filter = /([\d+-.]+)_([\d+-.]+)_([\d+-.]*)_([NS])_([\d+-.]+)_([\d+-.]+)_([\d+-.]*)_([EOW])_/; if(coord_filter.test(coord_params)) { coord_filter.exec(coord_params); marker.lat=(1.0*RegExp.$1) + (RegExp.$2/60.0) + (RegExp.$3/3600.0); if(RegExp.$4=='S') marker.lat*=-1; marker.lon=(1.0*RegExp.$5) + (RegExp.$6/60.0) + (RegExp.$6/3600.0); if(RegExp.$8=='W') marker.lon*=-1; } /* region_index = coordinates.indexOf('region:'); if(region_index>-1) { coordinate_region = coordinates.substr(region_index+7); coordinate_region = coordinate_region.substr(0,coordinate_region.indexOf('"')); } */ mapbutton = document.createElement('img'); mapbutton.title = strings.buttonTooltip[language]; mapbutton.style.padding = '0px 3px 0px 0px'; mapbutton.style.cursor = 'pointer'; mapbutton.src = config.buttonImage; mapbutton.mapparam = marker.lat + '_' + marker.lon + '_' + config.width + '_' + config.height + '_' + language+'_'+config.zoom; addEvent( mapbutton, 'click', toggleIFrame ); // link.parentNode.insertBefore(mapbutton, link.nextSibling); link.parentNode.insertBefore(mapbutton,link); } /* var def_zoom = ''; if( typeof(wikiminiatlas_defaultzoom) == 'number' ) def_zoom = '_' + wikiminiatlas_defaultzoom; */ } } //for // iframe vorbereiten iframe.div = document.createElement('div'); iframe.div.style.visibility = 'hidden'; iframe.div.style.width = (config.width+12)+'px'; iframe.div.style.height = (config.height+12)+'px'; iframe.div.style.margin = '0px'; iframe.div.style.padding = '0px'; iframe.div.style.backgroundColor = 'white'; iframe.div.style.position = 'absolute'; iframe.div.style.right = '2em'; iframe.div.style.top = '1em'; iframe.div.style.border = '1px solid gray'; iframe.div.style.zIndex = 13; iframe.closebutton = document.createElement('img'); iframe.closebutton.title = strings.close[language]; iframe.closebutton.src = config.imgbase + 'button_hide.png' iframe.closebutton.style.zIndex = 15; iframe.closebutton.style.position = 'absolute'; iframe.closebutton.style.right = '11px'; iframe.closebutton.style.top = '11px'; iframe.closebutton.style.width = '18px'; iframe.closebutton.style.cursor = 'pointer'; iframe.closebutton.mapparam = ''; addEvent( iframe.closebutton, 'click', toggleIFrame ); iframe.iframe = document.createElement('iframe'); iframe.iframe.scrolling = 'no'; iframe.iframe.border = '0'; iframe.iframe.style.zIndex = 14; iframe.iframe.style.position = 'absolute'; iframe.iframe.style.right = '1px'; iframe.iframe.style.top = '1px'; iframe.iframe.style.width = (config.width+10)+'px'; iframe.iframe.style.height = (config.height+10)+'px'; iframe.iframe.style.margin = '0px'; iframe.iframe.style.padding = '0px'; iframe.div.appendChild(iframe.iframe); iframe.div.appendChild(iframe.closebutton); var content = document.getElementById('content'); content.insertBefore(iframe.div,content.childNodes[0]); } //with } } // // Hook up installation function // addOnloadHook(wikiminiatlas.loader); //</pre>