Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//<pre>
// Script to embed interactive maps into pages that have coordinate templates
// also check my commons page [[:commons:User:Dschwen]] for more tools
//
// defaults
//
var wikiminiatlas_coordinate_region = '';
var wikiminiatlas_width = 500;
var wikiminiatlas_height = 300;
//
// globals
//
var wikiminiatlas_widget = null;
var wikiminiatlas_map = 0;
var wikiminiatlas_nx;
var wikiminiatlas_ny;
var wikiminiatlas_tile;
var wikiminiatlas_old_onmouseup;
var wikiminiatlas_old_onmousemove;
var wikiminiatlas_dragging = null;
var wikiminiatlas_gx = 0;
var wikiminiatlas_gy = 0;
var wikiminiatlas_zoom = 0;
var wikiminiatlas_zoomsize = [ 3, 6 ,12 ,24 ,48 ];
//
// Insert the map Widget into the page.
//
function wikiminiatlasInstall()
{
coordinates = document.getElementById('coordinates');
if (coordinates != null && wikiminiatlas_widget == null) {
var region_index = (coordinates.innerHTML).indexOf('region:');
if(region_index>-1)
{
wikiminiatlas_coordinate_region = (coordinates.innerHTML).substr(region_index+7);
wikiminiatlas_coordinate_region = wikiminiatlas_coordinate_region.substr(0,wikiminiatlas_coordinate_region.indexOf('"'));
}
WikiMiniAtlasHTML = ' <a href="#" onclick="return toggleWikiMiniAtlas();">Atlas</a>';
WikiMiniAtlasHTML += '<div id="wikiminiatlas_widget" style="z-index:10; position:absolute; right:1em; top: 1em; width:'+(wikiminiatlas_width)+'px; height:'+(wikiminiatlas_height)+'px; border: 1px solid gray; background-color: white; padding: 5px; margin: 0px; visibility: hidden">';
WikiMiniAtlasHTML += '<div style="z-index:11; position:absolute; right:10px; top: 10px; width:1em; text-align:center; border:1px solid black; background-color:white; cursor:pointer" onclick="wmaZoomIn()">+</div>'
WikiMiniAtlasHTML += '<div style="z-index:11; position:absolute; right:10px; top: 40px; width:1em; text-align:center; border:1px solid black; background-color:white; cursor:pointer" onclick="wmaZoomOut()">-</div>'
WikiMiniAtlasHTML += '<a href="http://www.schwen.de" style="z-index:11; position:absolute; bottom:10px; right: 10px; color:black; font-size:5pt">MiniWikiAtlas</a>'
WikiMiniAtlasHTML += '<div id="wikiminiatlas_map" style="position:absolute; width:'+wikiminiatlas_width+'px; height:'+wikiminiatlas_height+'px; border: 1px solid gray; cursor: move; background-color: #aaaaaa; clip:rect(0px, '+wikiminiatlas_width+'px, '+wikiminiatlas_height+'px, 0px);"></div>';
WikiMiniAtlasHTML += '</div>';
coordinates.innerHTML = coordinates.innerHTML + WikiMiniAtlasHTML ;
wikiminiatlas_widget = document.getElementById('wikiminiatlas_widget');
wikiminiatlas_old_onmouseup = document.onmouseup;
wikiminiatlas_old_onmousemove = document.onmousemove;
initializeWikiMiniAtlasMap();
moveWikiMiniAtlasMapTo();
}
}
//
// Hook up instalation function
//
addOnloadHook(wikiminiatlasInstall);
//
// Coordinate interpretation
//
function toggleWikiMiniAtlas()
{
if(wikiminiatlas_widget.style.visibility != "visible")
{
wikiminiatlas_widget.style.visibility="visible";
}
else
{
wikiminiatlas_widget.style.visibility="hidden";
}
return false;
}
function initializeWikiMiniAtlasMap()
{
if(wikiminiatlas_map == 0)
{
wikiminiatlas_map = document.getElementById('wikiminiatlas_map');
wikiminiatlas_map.onmousedown = mouseDownWikiMiniAtlasMap;
document.onmousemove = mouseMoveWikiMiniAtlasMap;
document.onmouseup = mouseUpWikiMiniAtlasMap;
wikiminiatlas_nx = Math.floor(wikiminiatlas_width/128)+2;
wikiminiatlas_ny = Math.floor(wikiminiatlas_height/128)+2;
wikiminiatlas_tile = new Array(wikiminiatlas_nx*wikiminiatlas_ny);
var n = 0;
var thistile;
for(var j = 0; j < wikiminiatlas_ny; j++)
for(var i = 0; i < wikiminiatlas_nx; i++)
{
//wikiminiatlas_map.innerHTML += '<image id="wmatile'+n+'" style="position:absolute" />';
//wikiminiatlas_map.innerHTML += '<div id="wmatile'+n+'" style="position:absolute; width:128px; height:128px; border: 1px solid red">'+n+'</div>';
wikiminiatlas_map.innerHTML += '<div id="wmatile'+n+'" style="position:absolute; width:128px; height:128px;"></div>';
//wikiminiatlas_tile[n] = new Image(128,128);
thistile = document.getElementById('wmatile'+n);
thistile.onmousedown = mouseDownWikiMiniAtlasMap;
//thistile.onmouseup = mouseUpWikiMiniAtlasMap;
n++;
}
}
}
//
// Set new map Position (to wikiminiatlas_gx, wikiminiatlas_gy)
//
function moveWikiMiniAtlasMapTo()
{
var lx = Math.floor(wikiminiatlas_gx/128) % wikiminiatlas_nx;
var ly = Math.floor(wikiminiatlas_gy/128) % wikiminiatlas_ny;
var fx = wikiminiatlas_gx % 128;
var fy = wikiminiatlas_gy % 128;
var n;
var thistile;
var tileurl;
//document.getElementById('debugbox').innerHTML='';
for(var j = 0; j < wikiminiatlas_ny; j++)
for(var i = 0; i < wikiminiatlas_nx; i++)
{
n = ((i+lx) % wikiminiatlas_nx) + ((j+ly) % wikiminiatlas_ny)*wikiminiatlas_nx;
thistile = document.getElementById('wmatile'+n);
thistile.style.left = (i*128-fx) + 'px';
thistile.style.top = (j*128-fy) + 'px';
//thistile.innerHTML = (Math.floor(wikiminiatlas_gx/128)+i)+','+(Math.floor(wikiminiatlas_gy/128)+j);
tileurl='url("'+wmaGetTileURL((Math.floor(wikiminiatlas_gy/128)+j),(Math.floor(wikiminiatlas_gx/128)+i),wikiminiatlas_zoom)+'")';
if(wikiminiatlas_tile[n]!=tileurl)
{
wikiminiatlas_tile[n] = tileurl;
thistile.style.backgroundImage=tileurl;
//thistile.innerHTML=tileurl;
}
//document.getElementById('debugbox').innerHTML+=wmaGetTileURL((Math.floor(wikiminiatlas_gy/128)+j),(Math.floor(wikiminiatlas_gx/128)+i),1)+'<br />';
}
}
//
// Mouse down handler (start map-drag)
//
function mouseDownWikiMiniAtlasMap(ev)
{
ev = ev || window.event;
wikiminiatlas_dragging = wmaMouseCoords(ev);
}
//
// Mouse up handler (finish map-drag)
//
function mouseUpWikiMiniAtlasMap()
{
wikiminiatlas_dragging = null;
if( wikiminiatlas_old_onmouseup != null ) wikiminiatlas_old_onmouseup();
}
// Mouse move handler
function mouseMoveWikiMiniAtlasMap(ev)
{
if( wikiminiatlas_dragging != null )
{
var newev = ev || window.event;
var newcoords = wmaMouseCoords(newev);
wikiminiatlas_gx -= ( newcoords.x - wikiminiatlas_dragging.x );
wikiminiatlas_gy -= ( newcoords.y - wikiminiatlas_dragging.y );
wikiminiatlas_dragging = newcoords;
if(wikiminiatlas_gy<0) wikiminiatlas_gy=0;
if(wikiminiatlas_gx<0) wikiminiatlas_gx+=Math.floor(wikiminiatlas_zoomsize[wikiminiatlas_zoom]*256);
moveWikiMiniAtlasMapTo();
}
if( wikiminiatlas_old_onmousemove != null ) wikiminiatlas_old_onmousemove(ev);
}
function wmaMouseCoords(ev)
{
if(ev.pageX || ev.pageY)
{
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
function wmaGetTileURL(y,x,z)
{
return 'http://up2p77.gwdg.de/~daniel/MiniWikiAtlas/tiles/zoom'+(z+1)+'/tile_'+(wikiminiatlas_zoomsize[z]-y-1)+'_'+(x % (wikiminiatlas_zoomsize[z]*2) )+'.png';
}
function wmaZoomIn()
{
if(wikiminiatlas_zoom<4) wikiminiatlas_zoom++;
moveWikiMiniAtlasMapTo();
}
function wmaZoomOut()
{
if(wikiminiatlas_zoom>0) wikiminiatlas_zoom--;
moveWikiMiniAtlasMapTo();
}
//</pre>