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
// entnommen aus [[Benutzer:Dschwen/coordinates.js]] (http://de.wikipedia.org/w/index.php?title=Benutzer:Dschwen/coordinates.js&oldid=27146611) mit folgenden Änderungen:
// - Bugfixes, z.B. Nichtfunktion wegen nicht gescapten geschweiften Klammern auf Zeile 293
// - Cookie-Management entfernt, da unnötig
// - optisches: typographische Minuten- und Sekundenzeichen, bedarfsgerechtes Weglassen von Millisekunden und Sekunden
// - Liste der japanischen Präfekturen für region-Parameter
// - Unterstützung für Infoboxen mit den Parametern mps_lat_deg, mps_lat_min, mps_lat_sec, mps_lon_deg, mps_lon_min und mps_lon_sec
// - direkte Koordinateneingabe verbessert und keine Änderungen bei Fehleingabe
// - Unterstützung der neuen Koordinatenvorlage
//
// globals
//
var mps_wpSummary = null;
var mps_optionalBox = null;
var mps_optionalBoxLabel = null;
var mps_optionalNumber = null;
var mps_lat,mps_lon;
var mps_coordArticle = null;
var mps_coordText = null;
var mps_listTemplates = new Array( 'Koordinate_Artikel' );
var mps_listRegions = new Array('',
'Aichi JP-23',
'Akita JP-05',
'Aomori JP-02',
'Chiba JP-12',
'Ehime JP-38',
'Fukui JP-18',
'Fukuoka JP-40',
'Fukushima JP-07',
'Gifu JP-21',
'Gunma JP-10',
'Hiroshima JP-34',
'Hokkaidō JP-01',
'Hyōgo JP-28',
'Ibaraki JP-08',
'Ishikawa JP-17',
'Iwate JP-03',
'Kagawa JP-37',
'Kagoshima JP-46',
'Kanagawa JP-14',
'Kōchi JP-39',
'Kumamoto JP-43',
'Kyōto JP-26',
'Mie JP-24',
'Miyagi JP-04',
'Miyazaki JP-45',
'Nagano JP-20',
'Nagasaki JP-42',
'Nara JP-29',
'Niigata JP-15',
'Ōita JP-44',
'Okayama JP-33',
'Okinawa JP-47',
'Ōsaka JP-27',
'Saga JP-41',
'Saitama JP-11',
'Shiga JP-25',
'Shimane JP-32',
'Shizuoka JP-22',
'Tochigi JP-09',
'Tokushima JP-36',
'Tokio JP-13',
'Tottori JP-31',
'Toyama JP-16',
'Wakayama JP-30',
'Yamagata JP-06',
'Yamaguchi JP-35',
'Yamanashi JP-19',
'Deutschland DE' );
var mps_listTypes = new Array( 'landmark', 'city', 'mountain', 'waterbody', 'isle', 'airport', 'country', 'state', 'adm1st', 'adm2nd' );
var mps_typeSelect = null;
var mps_regionSelect = null;
var mps_editbox = null;
var mps_coordinatebox = null;
//
// Insert the coordinate Form into the edit box.
//
function mps_coordinatesInstall()
{
var i=0;
var copywarn = document.getElementById('editButtons');
if (copywarn != null) {
var cleaner = "<br style=\\'clear:both;\\' />";
CoordinatesHTML = '<div style="border: 1px solid gray; padding: 3px; margin-top: 2px; margin-bottom:2px;" >'
CoordinatesHTML += '<input type="button" value="GoogleMaps-Link oder Koordinate mit Sekundenangabe einfügen" onclick="mps_interpretCoordinates();" /> ';
CoordinatesHTML += '<input type="text" size="80" id="mps_coordinatebox" onfocus="mps_showDetails()" />';
CoordinatesHTML += '<div id="CoordinateDetails" style="margin-top: 2px; position: relative"><a href="#" onclick="mps_hideDetails()" style="position:absolute; bottom:3px; right:3px; font-size:50%">schließen</a>';
CoordinatesHTML += '<label for="CheckBoxArticle">Artikel</label> <input type="checkbox" name="CheckBoxArticle" value="CheckBoxArticle" id="CheckBoxArticle" title="Artikelkoordinate" /> ';
CoordinatesHTML += '<label for="CheckBoxText">Text</label> <input type="checkbox" name="CheckBoxText" value="CheckBoxText" id="CheckBoxText" title="Fließtextkoordinate" /> ';
CoordinatesHTML += '<label for="CoordinateRegion">Region:</label> <select title="Region" id="CoordinateRegion">';
for (i=0; i<mps_listRegions.length; ++i) {
CoordinatesHTML += '<option value="'+mps_listRegions[i]+'">'+mps_listRegions[i]+'</option>';
}
CoordinatesHTML += '</select> <label for="CoordinateType">Typ:</label> <select onchange="mps_toggleOptional()" title="Typ (bitte angeben)" id="CoordinateType">';
for (i=0; i<mps_listTypes.length; ++i) {
CoordinatesHTML += '<option value="'+mps_listTypes[i]+'">'+mps_listTypes[i]+'</option>';
}
CoordinatesHTML += '</select> <label for="CoordinateDimNumber">Durchmesser des <a href="/wiki/Umkreis" title="Umkreis">Umkreises</a> in Meter:</label> <input type="text" size="10" id="CoordinateDimNumber" /> <span id="CoordinateBoxOptional" style="visibility: hidden"><label for="CoordinateNumber" id="CoordinateBoxOptionalLabel"></label> <input type="text" size="9" id="CoordinateNumber" /></span></div></div>';
copywarn.innerHTML = CoordinatesHTML + copywarn.innerHTML;
mps_wpSummary = document.getElementById('wpSummary');
mps_optionalBox = document.getElementById('CoordinateBoxOptional');
mps_optionalBoxLabel = document.getElementById('CoordinateBoxOptionalLabel');
mps_optionalNumber = document.getElementById('CoordinateNumber');
detailBox = document.getElementById('CoordinateDetails');
dimNumber = document.getElementById('CoordinateDimNumber');
mps_typeSelect = document.getElementById('CoordinateType');
mps_regionSelect = document.getElementById('CoordinateRegion');
mps_coordArticle = document.getElementById('CheckBoxArticle');
mps_coordText = document.getElementById('CheckBoxText');
mps_hideDetails();
mps_editbox = document.getElementById('wpTextbox1');
mps_coordinatebox = document.getElementById('mps_coordinatebox');
// suche nach boilerplate text: Koordinaten 38,18° Nord, 122,26° West
var boilerplate_filter = /Koordinaten.* ([^°]+)° (Nord|Süd), ([^°]+)° (West|Ost)/;
var result;
if( result = boilerplate_filter.exec(mps_editbox.value) )
{
mps_lat = result[1].replace(/,/, ".");
if( result[2] == 'Süd' ) mps_lat*=-1;
mps_lon = result[3].replace(/,/, ".");
if( result[4] == 'West' ) mps_lon*=-1;
mps_coordinatebox.value = 'boilerplate:'+mps_lat+','+mps_lon;
mps_showDetails();
}
boilerplate_filter = / ([0-9.,]+) Einwohner/;
if( result = boilerplate_filter.exec(mps_editbox.value) )
{
mps_optionalNumber.value = result[1].replace(/[,\.]/, "");
mps_typeSelect.selectedIndex = 1;
mps_toggleOptional();
}
}
}
function mps_toggleOptional()
{
mps_optionalBox.style.visibility="hidden";
if(mps_typeSelect.value == 'city')
{
mps_optionalBoxLabel.innerHTML='Einwohnerzahl:';
mps_optionalBox.style.visibility="visible";
}
if(mps_typeSelect.value == 'mountain')
{
mps_optionalBoxLabel.innerHTML='Höhe (in Meter):';
mps_optionalBox.style.visibility="visible";
}
}
function mps_hideDetails()
{
//detailBox.style.visibility="hidden";
detailBox.style.display="none";
return false;
}
function mps_showDetails()
{
//detailBox.style.visibility="visible";
detailBox.style.display="block";
}
//
// Hook up installation function
//
addOnloadHook(mps_coordinatesInstall);
//
// Coordinate interpretation
//
function mps_interpretCoordinates()
{
var coordinate1 = mps_coordinatebox.value;
var coordinate2 = '';
var from_ll, result;
var coord_filter = /http:\/\/www\.google\.([a-zA-Z]+)\/maps/;
var latlon = new Array;
// magic!
if(coordinate1.substr(0,19)=='http://maps.google.' || coord_filter.test(coordinate1) )
{
var llidx = coordinate1.indexOf("&ll=");
if (llidx == -1) llidx = coordinate1.indexOf("?ll=");
if (llidx != -1) from_ll = coordinate1.substr(llidx+4);
var ampers = from_ll.indexOf('&');
if(ampers==-1)
{
latlon = from_ll.split(",");
}
else
{
latlon = (from_ll.substr(0,ampers)).split(",");
}
} else
//http://tools.wikimedia.de/~magnus/geo/geohack.php?params=39_18_S_175_35_E_type:mountain_region:NZ
if(coordinate1.substr(0,49)=='http://tools.wikimedia.de/~magnus/geo/geohack.php')
{
latlon = from_ll.split(",");
} else
// gefundene boilerplate daten
if( coordinate1.substr(0,12) == 'boilerplate:' )
{
from_ll = coordinate1.substr(12);
latlon = from_ll.split(",");
} else
//31°46'14.44"N ; 35°14'5.88"E
{
coord_filter = /([\d.,]+)°\s*([\d.,]+)['`′]\s*([\d.,]+)["″]\s*([nN])\s*[;,]?\s*([\d.,]+)°\s*([\d.,]+)['`′]\s*([\d.,]+)["″]\s*([oOwWeE])/;
if( result = coord_filter.exec(coordinate1 ) )
{
latlon[0] = result[1]*1.0 + result[2]/60.0 + result[3]/3600.0;
if( result[4]=='s' || result[4]=='S' ) latlon[0] *= -1.0;
latlon[1] = result[5]*1.0 + result[6]/60.0 + result[7]/3600.0;
if( result[8]=='w' || result[8]=='W' ) latlon[1] *= -1.0;
} else return;
}
var mark_ns = 'N';
var mark_ew = 'E';
var mark_ew_d = 'O';
mps_lat = latlon[0];
mps_lon = latlon[1];
if(mps_lat<0) { mps_lat*=-1; mark_ns='S'; }
if(mps_lon<0) { mps_lon*=-1; mark_ew='W'; mark_ew_d='W';}
var mps_lat_m = (( mps_lat - Math.floor(mps_lat) ) * 60.0);
var mps_lon_m = (( mps_lon - Math.floor(mps_lon) ) * 60.0);
var mps_lat_s = ( mps_lat_m - Math.floor(mps_lat_m) ) * 60.0;
var mps_lon_s = ( mps_lon_m - Math.floor(mps_lon_m) ) * 60.0;
var slat_m = Math.floor(mps_lat_m).toString();
var slon_m = Math.floor(mps_lon_m).toString();
if (slat_m.length == 1) slat_m = '0' + slat_m;
if (slon_m.length == 1) slon_m = '0' + slon_m;
var slat_s = "";
var slon_s = "";
if ((mps_lat_s != 0) || (mps_lon_s != 0))
{
slat_s = mps_lat_s.toFixed(2);
slon_s = mps_lon_s.toFixed(2);
if (slat_s.length < 5) slat_s = '0' + slat_s;
if (slon_s.length < 5) slon_s = '0' + slon_s;
// wenn beide _visuell_ keine Nachkommastellen aufweisen, diese Nullen entfernen
var slat_s_delim_pos = slat_s.indexOf('.00');
var slon_s_delim_pos = slon_s.indexOf('.00');
if ((slat_s_delim_pos >= 0) && (slon_s_delim_pos >= 0))
{
slat_s = slat_s.substr(0, slat_s_delim_pos);
slon_s = slon_s.substr(0, slon_s_delim_pos);
}
}
var infoBoxRegEx = /(\|\s*mps_lat_deg\s*=\s*)[0-9]+(\s*\|\s*mps_lat_min\s*=\s*)[0-9]+(\s*\|\s*mps_lat_sec\s*=\s*)[0-9.]*(\s*\|\s*mps_lon_deg\s*=\s*)[0-9]+(\s*\|\s*mps_lon_min\s*=\s*)[0-9]+(\s*\|\s*mps_lon_sec\s*=\s*)[0-9.]*/;
if (mps_editbox.value.match(infoBoxRegEx))
{
mps_editbox.value = mps_editbox.value.replace(infoBoxRegEx,
"$1" + Math.floor(mps_lat) + "$2" + slat_m + "$3" + slat_s +
"$4" + Math.floor(mps_lon) + "$5" + slon_m + "$6" + slon_s);
}
else
{
coordinate2 = '{{Coordinate';
if (mps_coordText.checked == true)
{
if (mps_coordArticle.checked == true) coordinate2 += '|article=/';
coordinate2 += '|text=/';
}
coordinate2 += '|NS='+mps_lat+'|EW='+mps_lon+'|type='+mps_typeSelect.value;
if (mps_typeSelect.value=='city' && mps_optionalNumber.value!='')
{
coordinate2 += '|pop='+mps_optionalNumber.value;
}
if (mps_typeSelect.value=='mountain' && mps_optionalNumber.value!='')
{
coordinate2 += '|elevation='+mps_optionalNumber.value;
}
if( mps_regionSelect.value!='')
{
var regionWords = mps_regionSelect.value.split(" ");
coordinate2 += '|region='+regionWords[regionWords.length - 1];
}
if (dimNumber.value != '')
{
coordinate2 += '|dim=' + dimNumber.value;
}
if (mps_coordText.checked == true)
{
coordinate2 += '|name=';
}
coordinate2 += '}}';
// alte Koordinatenvorlage aktualisieren
if (mps_editbox.value.match(/\{\{Koordinate[\s_]Artikel.*\}\}/))
{
mps_editbox.value = mps_editbox.value.replace(/\{\{Koordinate[\s_]Artikel.*\}\}/, coordinate2);
if (mps_wpSummary.value == "") mps_wpSummary.value = "Geokoordinaten geändert";
}
// Koordinatenvorlage hinzufügen
else
{
mps_editbox.value += coordinate2;
if (mps_wpSummary.value == "") mps_wpSummary.value = "Geokoordinaten eingefügt";
}
}
}