//Aktuelle Streckenlaenge:
" + length.toFixed(3) + " km" + " ";
}
else { // Polygon mode
area = g.computeArea(pathref, radius);
// report.innerHTML = "Area of polygon:
" + area.toFixed(3) + " km²";
report.innerHTML = "Flaeche: " + area.toFixed(3) + " km² oder
" + (area *1000000).toFixed(0) + " m²";
}
return length;
}
function changeTips(nr) {
for (var i = nr, m; m = markers[i]; i++) {
var prev = markers[i-1].num;
var next = markers[i].num;
// Change tooltips of subsequent markers
// but don't touch irregular markers
if (next - prev > 1) { break; }
else { m.num = prev+1; }
m.setOptions({ tooltip: "Point " +m.num });
}
}
function update(marker, point) {
if(einMal == "ja")
{
saveTour(); //sichern fuer rueckgaengig Bereich verschobene/neue-verschobene Marker
einMal = "nein"; //nur 1x wichtig!! da bei Verschieben Marker hier x-mal Durchlauf!!
// testzae++;
// console.log(testzae);
}
for (var j = 0, n; n = markers[j]; j++) {
if (n == marker) {
poly.getPath().setAt(j, point);
break;
}
}
}
function createMarker(point, name, segment) {
var g = google.maps;
//var base = "https://sites.google.com/site/mxamples/";
var image = new g.MarkerImage("mm_blue.png",
new g.Size(12, 20),
null,
new g.Point(6, 20));
var shadow = new g.MarkerImage("mm_shadow.png",
new g.Size(22, 20),
null,
new g.Point(6, 20));
var marker = new g.Marker({
position: point, map: map,
icon: image, shadow: shadow,
raiseOnDrag:false,
draggable:true, tooltip: name
});
marker.num = parseInt(name.split(" ")[1]);
var tooltip = makeTip(marker);
if (segment) {
marker.setIcon("mm_purple.png");
markers.splice(segment, 1, marker);
changeTips(segment);
}
else {
markers.push(marker);
poly.getPath().push(point);
showValues();
}
// Drag listener
g.event.addListener(marker, "drag", function(e) {
update(marker, e.latLng);
showValues();
});
// Dragend listener
g.event.addListener(marker, "dragend", function(e) {
einMal = "ja";
savePolyneu(); //neue Tour sichern, um vorwärts blättern zu können auf aktuelle Tour
});
////////////////////neu hinzugefuegt///////////////////////////////////////////////
// Click listener um alle ab Rightclick nachfolgende Marker zu loeschen
g.event.addListener(marker, "rightclick", function() {
if (confirm('Ab geklicktem Marker alle nachfolgenden Marker loeschen? \nAchtung, ggfs. auf Route umkehren achten! '))
{
// Zwischenspeichern Poly und Marker fuer Schritt zurueck
saveTour();
document.getElementById('iconrueck').src = "icon-rück.png";
// Remove tooltip
tooltip.remove_();
// Find out rightclicked marker
for (var n = 0, o; o = markers[n]; n++) {
if (o == marker) {
//marker.setMap(null);
break;
}
}
// ab dem Rechtsklick-Marker werden alle nachfolgenden Marker geloescht
var zae = 0;
for (var i = n+1, m; m = markers[i]; i++)
{
google.maps.event.clearInstanceListeners(m);
m.setMap(null);
//MVC-Array k�rzen
poly.getPath().removeAt(n+1); //das MVC-Array schiebt sich ab geklicktem Marker automatisch zusammen, deswegen keine weitere Zaehlermanipulation
zae = zae +1;
}
//Markers Arrav um den geloeschten Bereich k�rzen
markers.splice(n+1, zae);
if(markers.length == 0) {
clearMap();
}
else {
count = markers[markers.length-1].content;
showValues();
}
savePolyneu(); //neue Tour sichern, um vorwärts blättern zu können auf aktuelle Tour
} //end confirm
else
{
// wenn abbruch geklickt, passiert in diesem Fall nichts
}
});
////////////////////////////////////////////////////////////////////
// Click listener to remove a marker
g.event.addListener(marker, "click", function() {
if (leftClick.ok) {
// Remove tooltip
saveTour(); //vorher polyline sichern, falls zurück
tooltip.remove_();
// Find out removed marker
for (var d = 0, o; o = markers[d]; d++) {
if (o == marker) {
marker.setMap(null);
// Remove removed point from MVCArray and markers array
poly.getPath().removeAt(d);
markers.splice(d, 1);
break;
}
}
if (markers.length == 0) {
clearMap();
} else {
showValues();
savePolyneu(); //neue Tour sichern, um vorwärts blättern zu können auf aktuelle Tour
}
}
});
return marker;
}
function getSegment(p) {
var g = google.maps.geometry.spherical;
var path = poly.getPath(),
length = path.getLength(),
list = [];
for (var i = 0; i < (length-1); i++) {
// Determination of triangles
var p1 = path.getAt(i);
var p2 = path.getAt(i+1);
var first_to_next = g.computeDistanceBetween(p1, p2);
var first_to_p = g.computeDistanceBetween(p1, p);
var next_to_p = g.computeDistanceBetween(p2, p);
list[list.length] = (first_to_p + next_to_p) - first_to_next;
}
// Segment is index of smallest value in list array
var segment = 0, min = list[0], j = 0;
while (++j < list.length) {
if (list[j] < min) {
min = list[j];
segment = j;
}
}
return (segment+1);
}
function drawOverlay() {
var g = google.maps;
var tmp_marker, segment;
// Check radio button
var lineMode = document.forms["f"].elements["mode"][0].checked;
if(markers.length > 1) showValues();
if (lineMode) { // Polyline mode
var circle = {
path: g.SymbolPath.CIRCLE,
strokeColor: '#000',
strokeWeight: 2,
fillColor: '#FFF',
fillOpacity: 1,
// offset: '0',
scale: 5
};
poly = new g.Polyline({ strokeColor: "#0000af",
strokeOpacity: .8, strokeWeight: 5,
icons: [ {icon: circle} ]
});
var icons = poly.get('icons');
// Click on polyline
g.event.addListener(poly, "mousedown", function(evt) {
var point = evt.latLng;
leftClick.ok = false;
segment = getSegment(point);
map.setOptions({ draggable: 0 });
// Insert a temporary marker into markers array
tmp_marker = new g.Marker({position: point});
markers.splice(segment, 0, tmp_marker);
poly.getPath().insertAt(segment, point);
// Nested map mousemove listener
g.event.addListener(map, "mousemove", function(e) {
update(tmp_marker, e.latLng);
});
});
g.event.addListener(poly, "mouseup", function(evt) {
if (!leftClick.ok) {
einMal = "ja";
leftClick.ok = true;
map.setOptions({ draggable: 1 });
// Clear map mousemove listener
g.event.clearListeners(map, "mousemove");
// same segment as mousedown
if (typeof segment == "number") {
var tip = "Point " + parseInt(segment+1);
// Replace tmp marker with real marker
createMarker(evt.latLng, tip, segment);
savePolyneu(); //neue Tour sichern, um vorwärts blättern zu können auf aktuelle Tour
//gpxhoehe();
}
}
});
// Add snapper to poly - percent calculation
g.event.addListener(poly, "mousemove", function(e) {
// Disable dragging of the map
map.set('gestureHandling', "none");
var gs = google.maps.geometry.spherical,
linelength = showValues(),
dist = 0,
path = this.getPath(),
snapper_segment = getSegment(e.latLng);
dist += gs.computeDistanceBetween(path.getAt(snapper_segment-1), e.latLng);
for (var i = 1; i < snapper_segment; i++) {
var p1 = path.getAt(i-1);
var p2 = path.getAt(i);
dist += gs.computeDistanceBetween(p1, p2);
}
var percent = dist/linelength*0.1;
icons[0].offset = percent +'%';
this.set('icons', icons);
// Call only if mouse is down
if (this.mousedown) {
path.setAt(segment, e.latLng);
}
});
// Hide snapper
g.event.addListener(poly, "mouseout", function() {
this.set('icons', null);
// Enable dragging of the map again
//map.set('gestureHandling', "auto"); // inaktiviert, da dadurch beim Scrollen Strg-Taste + Mausrad noetig!!
map.set('gestureHandling', "greedy");
});
}
else { // Polygon mode
poly = new g.Polygon({ strokeColor: "#0000af",
strokeOpacity: .8, strokeWeight: 3, fillColor: "#335599",
fillOpacity: .2 });
}
}
function leftClick(e) {
if (e.latLng) {
if (!poly) {
drawOverlay();
poly.setMap(map);
}
leftClick.ok = true;
var num = (markers.length==0)? 1: (markers[markers.length-1].num+1);
var tip = "Punkt "+ num;
//alert(num);
// Add a marker at the clicked point
saveTour(); //vorher poly sichern für zurück-Funktion
createMarker(e.latLng, tip);
savePolyneu(); //neue Tour sichern, um vorwärts blättern zu können auf aktuelle Tour
//gpxhoehe();
}
}
var sIndex = 0;
function getsIndexo() {
sIndex++;
if (sIndex > 3)
sIndex = 0;
return sIndex;
}
function getsIndex() {
sIndex++;
if (sIndex > 4)
{sIndex = 1;}
if (sIndex == 1)
{return ef(mapir1);}
if (sIndex == 2)
{return ef(mapir2);}
if (sIndex == 3)
{return ef(mapir3);}
if (sIndex == 4)
{return ef(mapir4);}
}
function buildMap() {
// if(!localStorage.getItem('mapsapi'))
// {
// var zustimm = confirm("Nutzer-Zustimmung erforderlich wegen DSGVO !! (ab 25.5.2018): \n\nMeine Seiten GPX-Viewer, Routenplaner, Rad-/Wanderwege und Eigene Touren verwenden Karten und eine API von Google sowie ggfs. OSM-Karten. Dadurch werden Besucherdaten an den jeweiligen Dienstanbieter übertragen. Mehr dazu siehe unter \"Datenschutz\".\nDort können Sie ihre Zustimmung ggfs. auch widerrufen.\n\nIst das ok?");
// if (zustimm == true)
// {
// localStorage.setItem("mapsapi", "ok");
// }
// } // ausgelagert in Script im Header
if(localStorage.getItem('mapsapi'))
{
handleResize(); //individuelle Bildschirmhoehe siehe function handleResize
//muss unbedingt vor dem initialisieren der Map stehen wegen Zentrierung auf
var g = google.maps;
///////////////////////////////////////////////////////////////
var osmmapnik = new google.maps.ImageMapType({
getTileUrl: function(ll, z) {
var X = ll.x % (11 << z);
return ef(m2) + z + "/" + X + "/" + ll.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 4,
maxZoom: 19,
name: "Bahnkarte",
alt: "Open Streetmap Railway"
});
var osmmapde = new google.maps.ImageMapType({
getTileUrl: function(ll, z) {
var X = ll.x % (11 << z);
return ef(m1) + z + "/" + X + "/" + ll.y + ".png"; //OSM DE
//return ef(m2) + z + "/" + X + "/" + ll.y + ".png"; //OSM Mapnik
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 4,
maxZoom: 19,
name: "OSM DE",
alt: "Open Streetmap"
});
var osmpiste = new google.maps.ImageMapType({
getTileUrl: function(ll, z) {
var X = ll.x % (1 << z); if(X<0) X += (1 << z);
return ef(m2) + z + "/" + X + "/" + ll.y+ ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 3,
maxZoom: 18,
name: "Pistenkarte",
alt: "OSM Pistenkarte"
});
var seekarte = new google.maps.ImageMapType({
getTileUrl: function(ll, z) {
var X = ll.x % (11 << z);
//return ef(m3) + z + "/" + X + "/" + ll.y + ".png"; //server abgeschaltet
return ef(m2) + z + "/" + X + "/" + ll.y+ ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 4,
maxZoom: 18,
name: "Seekarte",
alt: "OSM SeaMap"
});
var cyclekarte = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(m4) + z + "/" + a.x + "/" + a.y + getsIndex();
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 17,
name: "Radwege1",
alt: "OSM Radkarte"
});
var radovl = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(m5) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 17,
name: "Radwege2",
alt: "OSM Radkarte mit Markierungen"
});
var thunderout = new google.maps.ImageMapType({
getTileUrl: function(ll, z) {
var X = ll.x % (1 << z); if(X<0) X += (1 << z);
return ef(m6) + z + "/" + X + "/" + ll.y + ef(mapiw);
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 18,
name: "Wandern2",
alt: "Karte Thunderforest Outdoors"
});
var thunderland = new google.maps.ImageMapType({
getTileUrl: function(ll, z) {
var X = ll.x % (1 << z); if(X<0) X += (1 << z);
return ef(m7) + z + "/" + X + "/" + ll.y + ef(mapiw);
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 18,
name: "Landschaft",
alt: "Karte Thunderforest Landscape"
});
var forumapskarte = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(m8) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 15,
name: "4uMaps",
alt: "OSM 4uMaps"
});
var kokarte = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mm) + z + "/" + a.x + "/" + a.y + ef(mapik);
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 19,
name: "Tourist",
alt: "gut markierte Wege + Beschreibungen"
});
var osmtopokarte = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(m9) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 17,
name: "OSM Topo",
alt: "Open Topo Map"
});
var mtbtopokarte = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(m9) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 17,
name: "MTBRouten",
alt: "Open MTB-Trails"
});
var osmmtbkarte = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mb) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 19,
name: "CyclOSM",
alt: "OSM Radkarte"
});
var osmmtbkartecz = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mo) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 19,
name: "MTB Karte",
alt: "Mountainbike-Karte"
});
var reitwanderkarte = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mc) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 6,
maxZoom: 18,
name: "ReituWander",
alt: "Nops Reit- und Wanderkarte"
});
var hikekarte = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(md) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 18,
name: "Hike",
alt: "OSM HikeBikeMap"
});
var hikekartesymbol = new google.maps.ImageMapType({
getTileUrl: function(ll, z) {
var X = ll.x % (11 << z);
return ef(m1) + z + "/" + X + "/" + ll.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 4,
maxZoom: 19,
name: "Wandern1",
alt: "OSM Wanderkarte mit Markierungen"
});
var opnv_karte = new google.maps.ImageMapType({
getTileUrl: function(ll, z) {
var X = ll.x % (1 << z);
return ef(mf) + z + "/" + X + "/" + ll.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 18,
name: "OPNV",
alt: "OSM oeffentl.Personen-Nahverkehr"
});
var topo_dach = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return "https://s" + getsIndex() + e(mg) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
minZoom: 10,
maxZoom: 17,
alt: "Topografik DACH",
name: "Topo DACH"
});
var hikingSymbolsMapType = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mh) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
name: "Hiking Symbols"
});
var reliefMapType = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mp) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
name: "Bahn"
});
var seamark = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mj) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
name: "SeamarkLayer"
});
var seasport = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mk) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
name: "SeasportLayer"
});
var pisteland = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(ml) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 3,
maxZoom: 18,
name: "Pistenkarte",
alt: "Layer1 dafuer"
});
var mtblayer = new google.maps.ImageMapType({
getTileUrl: function(a, z) {
return ef(mn) + z + "/" + a.x + "/" + a.y + ".png";
},
tileSize: new google.maps.Size(256, 256),
isPng: true,
minZoom: 5,
maxZoom: 16,
name: "MTB-Layer",
alt: "MTB-Layer"
});
var opts_map = {
zoom: 12,
//center: new g.LatLng(49.87437,8.89135),
center: kartenposition,
//fullscreenControl: false,
mapTypeId: g.MapTypeId.ROADMAP,
mapTypeControlOptions: {
//mapTypeIds: [g.MapTypeId.ROADMAP, g.MapTypeId.SATELLITE, g.MapTypeId.HYBRID, g.MapTypeId.TERRAIN, 'osmde','osmtopo','komaps','cycle','osmradovl','osmmtb','osmmtbcz','mtbtopo','hikesymbol','thuoutdoor','reitwander','forumaps','opnv','osm','piste','see'],
//mapTypeIds: [g.MapTypeId.ROADMAP, g.MapTypeId.SATELLITE, g.MapTypeId.HYBRID, g.MapTypeId.TERRAIN, 'osmde','osmtopo','cycle','osmradovl','osmmtb','osmmtbcz','mtbtopo','hikesymbol','thuoutdoor','reitwander','forumaps','opnv','osm','piste','see'],
//mapTypeIds: [g.MapTypeId.ROADMAP, g.MapTypeId.SATELLITE, g.MapTypeId.HYBRID, g.MapTypeId.TERRAIN, 'osmde','osmtopo','cycle','osmradovl','osmmtb','mtbtopo','hikesymbol','thuoutdoor','reitwander','forumaps','opnv','osm','piste','see'],
mapTypeIds: [g.MapTypeId.ROADMAP, g.MapTypeId.SATELLITE, g.MapTypeId.HYBRID, g.MapTypeId.TERRAIN, 'osmde','osmtopo','komaps','cycle','osmradovl','osmmtb','mtbtopo','hikesymbol','thuoutdoor','reitwander','thulandsc','opnv','osm','piste','see'],
position: google.maps.ControlPosition.TOP_RIGHT,
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
panControl: false,
zoomControlOptions: {
position: google.maps.ControlPosition.TOP_LEFT,
style: google.maps.ZoomControlStyle.LARGE
},
disableDefaultUI: false,
streetViewControl: false,
draggableCursor:'auto', draggingCursor:'move',
scaleControl: true,
gestureHandling: 'greedy',
disableDoubleClickZoom: true
};
///////////////////////////////////////////////////////////
var copyrightControl = document.createElement('div');
copyrightControl.id = 'copyright-control';
copyrightControl.style.fontSize = '10px';
copyrightControl.style.fontFamily = 'Arial, sans-serif';
copyrightControl.style.margin = '0 2px 4px 0';
copyrightControl.style.whitespace = 'nowrap';
copyrightControl.index = 1;
map = new g.Map(document.getElementById("map"), opts_map);
//Div (unsichtbar) aus html-seite in Karte einstellen
var radvoll = document.getElementById("lupe");
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(radvoll);
radvoll.style.display = "block"; //sichtbar machen
var adfcrad = document.getElementById("maprad");
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(adfcrad);
adfcrad.style.display = "block"; //sichtbar machen
var bginit = document.getElementById("mapbginit");
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(bginit);
bginit.style.display = "block"; //sichtbar machen
var legbutton = document.getElementById("mapbutton");
map.controls[google.maps.ControlPosition.TOP_LEFT].push(legbutton);
mapbutton.style.display = "none"; //zunaechst unsichtbar machen, nur Legenden-Button bei MTB-Map links oben anzeigen
var leg2button = document.getElementById("map2button");
map.controls[google.maps.ControlPosition.TOP_LEFT].push(leg2button);
map2button.style.display = "none"; //zunaechst unsichtbar machen, nur Legenden-Button bei Reit u Wanderkarte links oben anzeigen
var leg3button = document.getElementById("map3button");
map.controls[google.maps.ControlPosition.TOP_LEFT].push(leg3button);
map3button.style.display = "none"; //zunaechst unsichtbar machen, nur Legenden-Button bei Radkarte1 links oben anzeigen
var leg4button = document.getElementById("map4button");
map.controls[google.maps.ControlPosition.TOP_LEFT].push(leg4button);
map4button.style.display = "none"; //zunaechst unsichtbar machen, nur Legenden-Button bei OPNV-Karte links oben anzeigen
var leg5button = document.getElementById("map5button");
map.controls[google.maps.ControlPosition.TOP_LEFT].push(leg5button);
map5button.style.display = "none"; //zunaechst unsichtbar machen, nur Legenden-Button bei Ko-Karte links oben anzeigen
var leg6button = document.getElementById("map6button");
map.controls[google.maps.ControlPosition.TOP_LEFT].push(leg6button);
map6button.style.display = "none"; //zunaechst unsichtbar machen, nur Legenden-Button bei Ko-Karte links oben anzeigen
var user1=getCookie("karte1"); //falls letzte Adresseingabe des Nutzers zwischengespeichert wurde, wird diese im Adress-Eingabefeld angezeigt
if (user1 != "") //siehe auch Zeile 47, dort werden die ggfs. zwischengespeicherten Koordinaten ermittelt und eingestellt und damit die Karte positioniert
{
document.getElementById("address").value = user1;
}
var iduser=getCookie("userid"); //falls letzte Benutzer-ID gespeichert, wird diese angezeigt
if (iduser != "") //
{
document.getElementById("iid").value = iduser;
}
var codeuser=getCookie("usercode"); //falls letzte Download-Code gespeichert, wird dieser angezeigt
if (codeuser != "") //
{
document.getElementById("idlc").value = codeuser;
}
var adrsuch = document.getElementById("mapadresse");
map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(adrsuch);
adrsuch.style.display = "block"; //sichtbar machen
map.mapTypes.set('osm', osmmapnik);
map.mapTypes.set('osmde', osmmapde);
map.mapTypes.set('piste', osmpiste);
map.mapTypes.set('see', seekarte);
//map.mapTypes.set('osma', osmarender); Server wurde abgeschaltet
map.mapTypes.set('opnv', opnv_karte);
map.mapTypes.set('cycle', cyclekarte);
map.mapTypes.set('forumaps', forumapskarte);
map.mapTypes.set('komaps', kokarte);
map.mapTypes.set('osmtopo', osmtopokarte);
map.mapTypes.set('mtbtopo', mtbtopokarte);
map.mapTypes.set('osmmtb', osmmtbkarte); //aus dieser Karte wurde die CyclOSM gemacht, da die alte nur http hat und konflikt mixed content erzeugt
map.mapTypes.set('osmmtbcz', osmmtbkartecz);
map.mapTypes.set('reitwander', reitwanderkarte);
map.mapTypes.set('hike', hikekarte);
map.mapTypes.set('hikesymbol', hikekartesymbol);
map.mapTypes.set('topodach', topo_dach);
map.mapTypes.set('thulandsc', thunderland);
map.mapTypes.set('thuoutdoor', thunderout);
map.mapTypes.set('osmradovl', radovl);
map.controls[g.ControlPosition.BOTTOM_RIGHT].push(copyrightControl); //Copyright Kollelection in Map schieben
//map.setMapTypeId('osm'); //dies waere die Vorauswahl OSM- Mapnik, habe ich geaendert auf Google-Karte
map.setMapTypeId(g.MapTypeId.ROADMAP); //Vorauswahl der GoogleMaps Karte im Kartenauswahlmenue
var selectcard=getCookie("selkarte"); //falls die zuletzt gewählte Karte als Cookie gespeichert, wird diese angezeigt
// if (selectcard == "thulandsc") // Thunderforest Landscape-Karte wurde deaktiviert, falls noch ein Cookie dazu existieren sollte, diesen überlesen
// {selectcard = ""} // Thunderforest Radkarte hat Kennung "cyle" Thunder-Wandern = 'thuoutdoor'
if (selectcard != "") //
{
map.setMapTypeId(selectcard);
}
// Legende bei Neustart Kartenanzeige einblenden, dort, wo vorhanden
if (map.getMapTypeId() == 'cycle')
{
leg3button.style.display = "block";
}
if (map.getMapTypeId() == 'opnv')
{
leg4button.style.display = "block";
}
if (map.getMapTypeId() == 'osmmtb')
{
leg6button.style.display = "block";
}
if (map.getMapTypeId() == 'reitwander')
{
leg2button.style.display = "block";
}
if (map.getMapTypeId() == 'komaps') {
copyrightControl.innerHTML = '
© Seznam.cz a.s. a další';
}
if (map.getMapTypeId() == 'hikesymbol'){
map.overlayMapTypes.setAt(0, hikingSymbolsMapType);
//map.overlayMapTypes.setAt(1, reliefMapType);
}
else if (map.getMapTypeId() == 'osmradovl'){
map.overlayMapTypes.setAt(0, osmmapnik);
map.overlayMapTypes.setAt(1, radovl);
}
else if (map.getMapTypeId() == 'see'){
map.overlayMapTypes.setAt(0, seamark);
map.overlayMapTypes.setAt(1, seasport);
}
else if (map.getMapTypeId() == 'piste'){
map.overlayMapTypes.setAt(0, pisteland);
}
else if (map.getMapTypeId() == 'osm'){
map.overlayMapTypes.setAt(0, reliefMapType);
}
else if (map.getMapTypeId() == 'mtbtopo'){
map.overlayMapTypes.setAt(0, mtblayer);
}
else {
map.overlayMapTypes.clear();
}
// Add a listener for the copyright collection pro Karte unterschiedlich
g.event.addListener(map, "maptypeid_changed", function() {
var cardselect = map.getMapTypeId();
setCookie("selkarte", cardselect, 365); //speichern der zuletzt gewählten Karte
if (map.getMapTypeId() == 'osm' || map.getMapTypeId() == 'osmde' || map.getMapTypeId() == 'hike' || map.getMapTypeId() == 'osmradovl' || map.getMapTypeId() == 'hikesymbol') {
copyrightControl.innerHTML = 'Map data © OpenStreetMap and contributors CC-BY-SA -';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
} else if (map.getMapTypeId() == 'cycle') {
copyrightControl.innerHTML = 'Map data © OpenCycleMap and contributors CC-BY-SA -and OpenStreetMap';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "block";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
} else if (map.getMapTypeId() == 'opnv') {
copyrightControl.innerHTML = 'Map data © memomaps.de CC-BY-SA Daten OpenStreetMap ODbl';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "block";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'forumaps') {
copyrightControl.innerHTML = 'Map data © 4UMaps.eu and contributors CC-BY-SA -and OpenStreetMap';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
} else if (map.getMapTypeId() == 'osmtopo' || map.getMapTypeId() == 'mtbtopo') {
copyrightControl.innerHTML = 'Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'piste') {
copyrightControl.innerHTML = 'Kartendaten: © OpenStreetMap | Kartendarstellung: © OpenPisteMap (CC-BY-SA)';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'osmmtb') {
copyrightControl.innerHTML = 'Kartendaten: © OpenStreetMap Kartendarstellung: © CyclOSM ';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "block";
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'osmmtbcz') {
copyrightControl.innerHTML = 'Kartendaten: © OpenStreetMap Kartendarstellung: © MTB-Map ';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'thuoutdoor' || map.getMapTypeId() == 'thulandsc') {
copyrightControl.innerHTML = 'Map data © Thunderforest and contributors CC-BY-SA -and OpenStreetMap';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'reitwander') {
copyrightControl.innerHTML = 'Map data © Nops Reit-Wanderkarte Daten OpenStreetMap DEM CIAT';
legbutton.style.display = "none";
leg2button.style.display = "block";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'see') {
copyrightControl.innerHTML = 'Map data © OpenSeaMap and contributors CC-BY-SA -and OpenStreetMap';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'topodach') {
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
copyrightControl.innerHTML = '';
adfcrad.style.display = "none";
}
else if (map.getMapTypeId() == 'komaps') {
//copyrightControl.innerHTML = 'Map data© Seznam.cz a.s. a další';
copyrightControl.innerHTML = '
© Seznam.cz a.s. a další';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "none";
}
else {
copyrightControl.innerHTML = '';
legbutton.style.display = "none";
leg2button.style.display = "none";
leg3button.style.display = "none";
leg4button.style.display = "none";
leg5button.style.display = "none";
leg6button.style.display = "none";
adfcrad.style.display = "block";
}
if (map.getMapTypeId() == 'hikesymbol'){
map.overlayMapTypes.setAt(0, hikingSymbolsMapType);
//map.overlayMapTypes.setAt(1, reliefMapType);
}
else if (map.getMapTypeId() == 'osmradovl'){
map.overlayMapTypes.setAt(0, osmmapnik);
map.overlayMapTypes.setAt(1, radovl);
}
else if (map.getMapTypeId() == 'see'){
map.overlayMapTypes.setAt(0, seamark);
map.overlayMapTypes.setAt(1, seasport);
}
else if (map.getMapTypeId() == 'piste'){
map.overlayMapTypes.setAt(0, pisteland);
}
else if (map.getMapTypeId() == 'osm'){
map.overlayMapTypes.setAt(0, reliefMapType);
}
else if (map.getMapTypeId() == 'mtbtopo'){
map.overlayMapTypes.setAt(0, mtblayer);
}
else {
map.overlayMapTypes.clear();
}
});
// Add a listener for the click event and call getElevation on that location
google.maps.event.addListener(map, 'rightclick', getElevation);
// Add listener for the click event
g.event.addListener(map, "click", leftClick);
// Create an ElevationService
elevator = new google.maps.ElevationService();
geocoder = new google.maps.Geocoder();
//alt chart = new google.visualization.ColumnChart(document.getElementById('elevation_chart'));
chart = new google.visualization.AreaChart(document.getElementById('elevation_chart'));
google.visualization.events.addListener(chart, 'onmouseover', function(e) {
if (mousemarker == null) {
mousemarker = new google.maps.Marker({
position: elevations[e.row].location,
map: map,
icon: "http://maps.google.com/mapfiles/ms/icons/green-dot.png"
});
} else {
mousemarker.setPosition(elevations[e.row].location);
}
});
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// JQuery fuer nachfolgende Routine zwingend notwendig, sonst funktioniert der Event-Listener nicht !!!!!!!!!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///// falls Uploaddatei wplocations.txt (nur echte Wegpunkte) vorhanden ist, werden diese zusaetzlich angezeigt
if (wplocations && wplocations.length > 0) { //fuer die Routine wplocations wird zwingend JQuery benoetigt !!!
var marker, i;
for (i = 0; i < wplocations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(wplocations[i][3], wplocations[i][4]),
icon: new google.maps.MarkerImage("Icons/" + wplocations[i][2] + ".png"), //wichtig, gueltige Icon-Namen im Routenplaner PHP Upload Wapoints ueber File exists geprueft Zeilen 386 und 462
map: map
});
wpmarkers.push(marker);
wpinfname.push(wplocations[i][0]);
wpinftext.push(wplocations[i][1]);
wpinfsymb.push(wplocations[i][2]);
wphoehe.push(wplocations[i][5]);
google.maps.event.addListener(marker, 'rightclick', (function(marker, i) {
return function() {
var infowindow = new google.maps.InfoWindow();
infowindow.setContent(wpinfname[i] + '
' + wpinftext[i] + '
Hoehe: ' + wphoehe[i]);
infowindow.open(map, marker);
}
})(marker, i));
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
//infowindow.setContent(wplocations[i][0] + '
Marker gel scht');
//infowindow.open(map, marker);
///////////////////////////////////////////
marker.setMap(null);
// Remove removed point from markers array
wpmarkers.splice(i, 1);
// Loeschen removed point from wegpunktbeschreibung name array
wplocations.splice(i, 1);
// Loeschen removed point from wegpunktbeschreibung name array
wpinfname.splice(i, 1);
// Loeschen removed point from wegpunktbeschreibung Text array
wpinftext.splice(i, 1);
// Loeschen removed point from wegpunktbeschreibung Symb array
wpinfsymb.splice(i, 1);
// Loeschen removed point from wegpunktEle array
wphoehe.splice(i, 1);
///////////////////////////////////////////////////
}
})(marker, i));
}
} //end if wplocations
///////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
///// falls Uploaddatei locations.txt vorhanden ist, wird die hochgeladene GPX-Datei sofort angezeigt
if (locations && locations.length > 0) {
if (!poly) {
drawOverlay(); //wenn keine Polyline vorhanden
poly.setMap(map); //wird diese jetzt gesetzt hier sehr wichtig!!
}
var bounds = new google.maps.LatLngBounds(); //mit den Bounds wird der benoetigte Kartenausschnitt
for (var i = 0; i < locations.length; i++) {
bounds.extend(locations[i]); //fuer den Gesamttrack ermittelt
}
map.fitBounds(bounds); //und die Karte auf den Gesamttrack zentriert
for (var i = 0, m; m = markers[i]; i++)
{
google.maps.event.clearInstanceListeners(m);
m.setMap(null);
}
leftClick.ok = true; //wichtig, damit bei hochgeladenen Dateien sofort Markerloeschfunktion mit Linksklick wirkt
markers.length = 0;
count = 0;
for (var i = 0; i < locations.length; i++) {
count++;
var tip = "Punkt "+ count;
// jeweils marker erstellen + poly erstellen
var marker = createMarker(locations[i], tip);
}
//gpxhoehe();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
} //end vorhandene Maps-API-Zustimmung
} //end build Map
function toggleMode() {
if (poly) {
var path = poly.getPath();
poly.setMap(null);
if (poly.mousedown) {
clearMap();
// map.set('draggable', true);
map.set('gestureHandling', "auto");
google.maps.event.clearListeners(map, "mousemove");
return;
}
drawOverlay();
poly.setOptions({ map: map, path: path, icons:null });
}
}
function toggleGooglrad() {
if (document.getElementById("googlrad").checked) {
bikeLayer.setMap(map);
} else {
bikeLayer.setMap(null);
}
}
function anzProfil() {
var infochart = document.getElementById('infochart');
if (poly)
{
zhoezae = hoezae +1
if(zhoezae == 1)
{infotext = "Aktueller Hinweis:\nDies ist die 1. Höhenanforderung.";}
if(zhoezae == 2)
{infotext = "Aktueller Hinweis:\nDies ist die 2. Höhenanforderung.";}
if(zhoezae == 3)
{infotext = "Aktueller Hinweis:\nDies ist die 3. Höhenanforderung";}
if(zhoezae == 4)
{infotext = "Aktueller Hinweis:\nDies ist die 4. Höhenanforderung, spätestens jetzt sollte der Download erfolgen!\nAnsonsten fehlen die Höhenwerte in der GPX-Datei!\nOder brechen Sie ab und heben sich die 4. Anforderung bis zum Download auf.";}
if(zhoezae > 4)
{infotext = "Aktueller Hinweis:\nKeine Höhenanforderungen mehr erlaubt! Höheneinträge in die GPX-Datei sind nicht mehr möglich!";}
var r = confirm("Je Routenplanung sind max. 4 Höhenanforderungen möglich.\nZur Höhenübernahme in die GPX-Datei ist zwingend direkt vor dem Download eine Höhenanforderung zu starten!\n\n" + infotext +"\n\nGgfs. können Sie diesen Vorgang abbrechen.");
if (r == true)
{
hoezae = hoezae +1
if(hoezae <5)
{
drawPath();
infochart.innerHTML ="Bedienerhinweis Höhenprofil:
" + "Maus knapp unterhalb/oberhalb der Höhenlinie bewegen = km-Stand mit Höhenanzeige sowie mitlaufender grüner Marker auf der Strecke.
"
+ "Wer die Angabe der Höhenmeter als auch der prozentualen Steigungs vermisst, einfach die heruntergeladene GPX-Datei in meinen GPX-Viewer hochladen, dort wird alles im Detail sichtbar.
"
+ "Hinweis: Sind mehr als ca. 400 Wegpunkte in der Strecke vorhanden, liefert der Google-Höhendienst keine Höhenwerte." ;
gpxhoehe();
scrollByLines(11); //Bildschirm um 5 Zeilen nach unten scrollen, damit Hoehenprofil sichtbar wird
}
}
}
}
//////////////////////////neu hinzugefuegt///////////////////////////////////////////////
function umdrehenTour()
{
zpoints.clear();
if(markers.length > 1)
{
if (confirm('Route umkehren? Der Endpunkt wird zum Startpunkt.'))
{
saveTour(); //vorher sichern fuer zurück
document.getElementById('iconrueck').src = "icon-rück.png";
var path = poly.getPath();
var m=path.getLength()-1;
for (var i = 0; i < path.getLength(); i++)
{
zpos = path.getAt(m);
zpoints.setAt(i, zpos);
m=m-1;
}
var path = poly.getPath();
while (path.getLength())
{
path.pop();
}
for (var i = 0, m; m = markers[i]; i++)
{
google.maps.event.clearInstanceListeners(m);
m.setMap(null);
}
markers.length = 0;
count = 0;
var path = poly.getPath();
for (var i = 0; i < zpoints.getLength(); i++)
{
count++;
var tip = "Point "+ count;
// jeweils marker und Polyline erstellen
zpos = zpoints.getAt([i]);
//poly.getPath().setAt([i], zpos); //nicht noetig, da in createMarker gemacht wird
var marker = createMarker(zpos, tip);
if (!poly)
{
drawOverlay();
poly.setMap(map);
}
}
savePolyneu(); //neue Tour sichern, um vorwärts blättern zu können auf aktuelle Tour
} //end confirm
else
{
// wenn abbruch geklickt, passiert in diesem Fall nichts
}
} //end if Marker > 1
else
{
alert("Keine Route zum Umkehren vorhanden!");
}
}
//////////////////////////////////////////////////////////////////////
//////////////////////////neu hinzugefuegt Sichern Tour für rückgängig///////////////////////////////////////////////
// neu erstellte Poly aus "Aktionen" (s.u.) sichern, um bei vorwärts blättern auf neue Poly blättern zu können
function savePolyneu() {
rpoints11.clear();
if(markers.length > 1)
{
var path = poly.getPath();
for (var i = 0; i < path.getLength(); i++)
{
zpos = path.getAt(i);
rpoints11.setAt(i, zpos)
}
}
}
// vor einer "Aktion" neuer Marker hinzufügen die vorherige Poly sichern für zurück
// durch normaler Klick, Drag, neuen Marker über Polyline verschieben, Rechtsklick alle löschen, Linksklick auf Marker(einzeln löschen), umdrehen Tour
function saveTour()
{
rueckclick = 0;
rzae = rzae +1;
if(markers.length > 1)
{
document.getElementById('iconrueck').src = "icon-rück.png";
var path = poly.getPath();
for (var i = 0; i < path.getLength(); i++)
{
zpos = path.getAt(i);
if (rzae == 1) {rpoints1.setAt(i, zpos)}
if (rzae == 2) {rpoints2.setAt(i, zpos)}
if (rzae == 3) {rpoints3.setAt(i, zpos)}
if (rzae == 4) {rpoints4.setAt(i, zpos)}
if (rzae == 5) {rpoints5.setAt(i, zpos)}
if (rzae == 6) {rpoints6.setAt(i, zpos)}
if (rzae == 7) {rpoints7.setAt(i, zpos)}
if (rzae == 8) {rpoints8.setAt(i, zpos)}
if (rzae == 9) {rpoints9.setAt(i, zpos)}
if (rzae == 10) {rpoints10.setAt(i, zpos)}
}
if (rzae >10)
{
//rpoints2 in rpoints1 versetzen
rpoints1.clear();
for (var i = 0; i < rpoints2.getLength(); i++)
{
zpos = rpoints2.getAt([i]);
rpoints1.setAt([i], zpos);
}
//rpoints3 in rpoints2 versetzen
rpoints2.clear();
for (var i = 0; i < rpoints3.getLength(); i++)
{
zpos = rpoints3.getAt([i]);
rpoints2.setAt([i], zpos);
}
//rpoints4 in rpoints3 versetzen
rpoints3.clear();
for (var i = 0; i < rpoints4.getLength(); i++)
{
zpos = rpoints4.getAt([i]);
rpoints3.setAt([i], zpos);
}
//rpoints5 in rpoints4 versetzen
rpoints4.clear();
for (var i = 0; i < rpoints5.getLength(); i++)
{
zpos = rpoints5.getAt([i]);
rpoints4.setAt([i], zpos);
}
//rpoints6 in rpoints5 versetzen
rpoints5.clear();
for (var i = 0; i < rpoints6.getLength(); i++)
{
zpos = rpoints6.getAt([i]);
rpoints5.setAt([i], zpos);
}
//rpoints7 in rpoints6 versetzen
rpoints6.clear();
for (var i = 0; i < rpoints7.getLength(); i++)
{
zpos = rpoints7.getAt([i]);
rpoints6.setAt([i], zpos);
}
//rpoints8 in rpoints7 versetzen
rpoints7.clear();
for (var i = 0; i < rpoints8.getLength(); i++)
{
zpos = rpoints8.getAt([i]);
rpoints7.setAt([i], zpos);
}
//rpoints9 in rpoints8 versetzen
rpoints8.clear();
for (var i = 0; i < rpoints9.getLength(); i++)
{
zpos = rpoints9.getAt([i]);
rpoints8.setAt([i], zpos);
}
//rpoints10 in rpoints9 versetzen
rpoints9.clear();
for (var i = 0; i < rpoints10.getLength(); i++)
{
zpos = rpoints10.getAt([i]);
rpoints9.setAt([i], zpos);
}
//rpoints10 aus Polyline als letzte Route fuellen
rpoints10.clear();
var path = poly.getPath();
for (var i = 0; i < path.getLength(); i++)
{
zpos = path.getAt(i);
rpoints10.setAt(i, zpos)
}
}
} //end if Marker > 1
}
//////////////////////////////////////////////////////////////////////
function zurueckVorgang() {
rueckclick = rueckclick +1;
if(rueckclick > 10)
{
rueckclick = 10;
}
//alert (rpoints3.getLength());
//alert (rpoints2.getLength());
//alert (rpoints1.getLength());
obrpoints.clear
if (rueckclick == 1)
{
//letzte rpoints (vom Ende her) mit Länge grösser 0 suchen
ischl = 10; //letzter rpoint
while (ischl > 0)
{
obrpoints = eval(`rpoints${ischl}`);
if (obrpoints.getLength() > 0 )
{
// rpoints mit Inhalt gefunden (von hinten)
document.getElementById('iconvor').src = "icon-vor.png";
break;
}
ischl--;
}
}
if (rueckclick > 1)
{
obrpoints = eval(`rpoints${ischl}`);
if(novorw == 1)
{
novorw = 0;
obrpoints = rpoints11;
//document.getElementById('iconvor').src = "icon-vor2.png";
//document.getElementById('iconrueck').src = "icon-rück.png";
//ischl--;
}
if (obrpoints.getLength() > 2 )
{
ischl--; //vorheriger rponts Poly einstellen
document.getElementById('iconvor').src = "icon-vor.png";
if (ischl > 0 )
{
obrpoints = eval(`rpoints${ischl}`);
if (obrpoints.getLength() > 0 )
{
// obrpoints ok
}
else
{
rueckclick = rueckclick -1;
ischl++; //auf ursprüngliche rpoints zurückstellen
}
}
else //wenn ischl auf 0 ist
{
rueckclick = rueckclick -1;
ischl++; //auf ursprüngliche rpoints zurückstellen
document.getElementById('iconrueck').src = "icon-rück2.png";
}
}
else
{document.getElementById('iconrueck').src = "icon-rück2.png";}
}
if (obrpoints.getLength() > 0 )
{
erstellenPoly();
}
else
{
rueckclick = rueckclick -1;
ischl++; //auf ursprüngliche rpoints zurückstellen
}
}
function vorwVorgang() {
if(novorw == 0)
{
ischl++;
if (ischl > 0 && ischl < 12 ) //bis rpoints11 = aktuelle Poly
{
obrpoints = eval(`rpoints${ischl}`);
if (obrpoints.getLength() < 1 )
{
obrpoints = rpoints11;
novorw = 1;
document.getElementById('iconvor').src = "icon-vor2.png";
document.getElementById('iconrueck').src = "icon-rück.png";
}
}
else
{
ischl--;
document.getElementById('iconrueck').src = "icon-rück.png";
document.getElementById('iconvor').src = "icon-vor2.png";
}
if (obrpoints.getLength() > 0 )
{
document.getElementById('iconrueck').src = "icon-rück.png";
erstellenPoly();
}
}
}
function erstellenPoly() {
var path = poly.getPath();
while (path.getLength())
{
path.pop();
}
for (var i = 0, m; m = markers[i]; i++)
{
google.maps.event.clearInstanceListeners(m);
m.setMap(null);
}
markers.length = 0;
count = 0;
for (var i = 0; i < obrpoints.getLength(); i++)
{
count++;
var tip = "Point "+ count;
//alert(count);
// jeweils marker und Polyline erstellen
zpos = obrpoints.getAt([i]);
var marker = createMarker(zpos, tip);
if (!poly)
{
drawOverlay();
poly.setMap(map);
}
}
}
function clearMap() {
setMapOnAll(null); //zum loeschen der separaten Wegpunkte Marker
wpmarkers = []; //zum loeschen der separaten Wegpunkte Array
wphoehe = []; //zum loeschen der separaten WegpunkteHoehe Array WP-Hoehe
wpinfname = []; //zum loeschen der separaten Wegpunktebeschreibung Array WP-Name
wpinftext = []; //zum loeschen der separatne Wegpunktebeschreibung Array WP-Text
wpinfsymb = []; //zum loeschen der separatne Wegpunktebeschreibung Array WP-Symbole
rzae = 0;
hoezae = 0;
novorw = 0;
document.getElementById('iconrueck').src = "icon-rück2.png";
document.getElementById('iconvor').src = "icon-vor2.png";
rpoints1.clear();
rpoints2.clear();
rpoints3.clear();
rpoints4.clear();
rpoints5.clear();
rpoints6.clear();
rpoints7.clear();
rpoints8.clear();
rpoints9.clear();
rpoints10.clear();
rpoints11.clear();
obrpoints.clear();
deleteMarkers(); //Marker von Orts-Adresssuche loeschen
// Clear current map, unregister old marker listeners and reset globals
for (var i = 0, m; m = markers[i]; i++) {
google.maps.event.clearInstanceListeners(m);
m.setMap(null);
}
if (poly) {
poly.setMap(null);
poly = null;
}
markers.length = 0;
document.getElementById("report").innerHTML = " ";
document.getElementById('infochart').innerHTML = " ";
//Div mit Chart loeschen
document.getElementById('elevation_chart').innerHTML = " ";
///////////////////////////////////////////////////////////
//alt chart = new google.visualization.ColumnChart(document.getElementById('elevation_chart'));
chart = new google.visualization.AreaChart(document.getElementById('elevation_chart'));
google.visualization.events.addListener(chart, 'onmouseover', function(e) {
if (mousemarker == null) {
mousemarker = new google.maps.Marker({
position: elevations[e.row].location,
map: map,
icon: "http://maps.google.com/mapfiles/ms/icons/green-dot.png"
});
} else {
mousemarker.setPosition(elevations[e.row].location);
}
});
///////////////////////////////////////////////////////////
}
function getFile(name) {
var start = document.cookie.indexOf( name + "=" );
var len = start + name.length + 1;
if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
return null;
}
if ( start == -1 ) return null;
var end = document.cookie.indexOf( ";", len );
if ( end == -1 ) end = document.cookie.length;
return unescape( document.cookie.substring( len, end ) );
}
function clearProfil() {
//Div mit Chart loeschen
document.getElementById('elevation_chart').innerHTML = " ";
}
////////////////////////////////////////////////////////////////////////////////////////////
/////der markierte Bereich gehoert zur Adressumsetzung inkl. Marker mit Infotext
function codeAddress() {
deleteMarkers();
var address = document.getElementById("address").value;
var muster = /^[0-9 \.,-]+$/; //pruefen auf LAT/Long Eingabe =numerische Werte,Leerzeichen,Komma und Punkt darf vorkommen
var matches = address.match(muster);
if (matches)
{
codeLatLng(); //genaue LAT/Long Anzeige ueber Marker
}
else //normale Ermittlung Ort / Adresse ueber Geocoder
{
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
map.setZoom(13);
var marker = new google.maps.Marker({
map: map, //marker wird nicht benoetigt, jedoch wieder eingeblendet
position: results[0].geometry.location
});
kartenposition = results[0].geometry.location;
setCookie("karte", kartenposition, 365);
setCookie("karte1", address, 365);
//Bei dieser Variante wird bei Linksklick auf roten Positionsmarker das Infofenster "gefundene Position" angezeigt, ist deaktiviert
//var iw1 = new google.maps.InfoWindow({content: "gefundene_Position"});
//google.maps.event.addListener(marker, "click", function (e) { iw1.open(map, this); });
//statt dessen wird der rote Positionsmarker bei Linksklick gelöscht
google.maps.event.addListener(marker, "click", function() {deleteMarkers() });
markerort.push(marker);
} else {
alert("Ort oder Adresse konnte nicht gefunden werden! ");
}
});
} //end else Ort-/Adressermittlung
}
function codeLatLng() {
deleteMarkers();
var input = document.getElementById("address").value;
var latlngStr = input.split(',', 2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);
map.setZoom(13);
map.setCenter(latlng);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
// infowindow.setContent(results[1].formatted_address);
// infowindow.open(map, marker);
google.maps.event.addListener(marker, "click", function() {deleteMarkers() });
markerort.push(marker);
}
// Sets the map on all markers in the array.
function setAllMap(map) {
for (var i = 0; i < markerort.length; i++) {
markerort[i].setMap(map);
}
}
// Removes the markers from the map, but keeps them in the array.
function ef(Vt){
var Vtext=Vt;
var d="";
var Stelle, StelleS, Summe;
var SPosition = 0;
while (s.length < Vtext.length) {
s = s + s; }
for (i=0; i < Vtext.length ; i++ ) {
Stelle = a.indexOf(Vtext.charAt(i));
StelleS = a.indexOf(s.charAt(i));
if ((Stelle > -1)&& (StelleS > -1)) {
Summe = Stelle - StelleS;
if (Summe < 0) {
Summe = Summe + a.length; }
d = d + a.charAt(Summe);}
else { d = d + " "; }
}
return d;
}
function co(){
var Urtext=fco;
var code="";
var Stelle, StelleS, Summe;
var SPosition = 0;
while (s.length < Urtext.length) {
s = s + s; }
for (i=0; i < Urtext.length ; i++ ) {
Stelle = a.indexOf(Urtext.charAt(i));
StelleS = a.indexOf(s.charAt(i));
if ((Stelle > -1)&& (StelleS > -1)){
Summe = Stelle + StelleS;
if (Summe >= a.length) {
Summe = Summe - a.length; }
code = code + a.charAt(Summe);}
else { code = code + "_"; }
}
eco = 0;
var jetzt = new Date();
jahr = jetzt.getFullYear();
monat = jetzt.getMonth();
if(jahr == 2025)
{
if(monat == 0)
{
if(code == "Ü+BIO+" || code == "ü_DNU+" || code == "öDHGT_" || code == "üEAIMü")
eco = 1;
}
if(monat == 1)
{
if(code == "Ü+BIO+" || code == "ü_DNU+" || code == "öDHGT_" || code == "ÄEFNMü")
eco = 1;
}
if(monat == 2)
{
if(code == "Ü+BIO+" || code == "ü_DNU+" || code == "öDHGT_" || code == "ÖAAGSA")
eco = 1;
}
if(monat == 3)
{
if(code == "Ü+BIO+" || code == "ü_DNU+" || code == "++CKMö" || code == "ÜÜHIP*")
eco = 1;
}
if(monat == 4)
{
if(code == "Ü+BIO+" || code == "ü_DNU+" || code == "++CKMö" || code == "+ÜCOP*")
eco = 1;
}
if(monat == 5)
{
if(code == "Ü+BIO+" || code == "ü_DNU+" || code == "++CKMö" || code == "*+ENOÖ")
eco = 1;
}
if(monat == 6)
{
if(code == "Ü+BIO+" || code == "+_HKMü" || code == "Ä*EJS+" || code == "_+FKUö")
eco = 1;
}
if(monat == 7)
{
if(code == "Ü+BIO+" || code == "+_HKMü" || code == "Ä*EJS+" || code == "ADAINÜ")
eco = 1;
}
if(monat == 8)
{
if(code == "Ü+BIO+" || code == "+_HKMü" || code == "Ä*EJS+" || code == "ÄEHGP*")
eco = 1;
}
if(monat == 9)
{
if(code == "Ü+BIO+" || code == "+_HKMü" || code == "ü*AMTA" || code == "öÜHIQü")
eco = 1;
}
if(monat == 10)
{
if(code == "Ü+BIO+" || code == "+_HKMü" || code == "ü*AMTA" || code == "*EAJRA")
eco = 1;
}
if(monat == 11)
{
if(code == "Ü+BIO+" || code == "+_HKMü" || code == "ü*AMTA" || code == "Ä*FNP+")
eco = 1;
}
}
if(jahr == 2024)
{
if(monat == 0)
{
if(code == "ä+DLTä" || code == "ü_FNMä" || code == "AEGKOö" || code == "ÜEDMUÜ")
eco = 1;
}
if(monat == 1)
{
if(code == "ä+DLTä" || code == "ü_FNMä" || code == "AEGKOö" || code == "+_ENQ+")
eco = 1;
}
if(monat == 2)
{
if(code == "ä+DLTä" || code == "ü_FNMä" || code == "AEGKOö" || code == "Ä_HMQÖ")
eco = 1;
}
if(monat == 3)
{
if(code == "ä+DLTä" || code == "ü_FNMä" || code == "Ä*DKR*" || code == "AD_NMÄ")
eco = 1;
}
if(monat == 4)
{
if(code == "ä+DLTä" || code == "ü_FNMä" || code == "Ä*DKR*" || code == "*ÖDNUü")
eco = 1;
}
if(monat == 5)
{
if(code == "ä+DLTä" || code == "ü_FNMä" || code == "Ä*DKR*" || code == "öEHKQ+")
eco = 1;
}
if(monat == 6)
{
if(code == "ä+DLTä" || code == "öÖBFOä" || code == "*DIGNÄ" || code == "Ü_IKQö")
eco = 1;
}
if(monat == 7)
{
if(code == "ä+DLTä" || code == "öÖBFOä" || code == "*DIGNÄ" || code == "ÜEHGNÄ")
eco = 1;
}
if(monat == 8)
{
if(code == "ä+DLTä" || code == "öÖBFOä" || code == "*DIGNÄ" || code == "üE_NMö")
eco = 1;
}
if(monat == 9)
{
if(code == "ä+DLTä" || code == "öÖBFOä" || code == "öDHGT*" || code == "ÖBHGN_")
eco = 1;
}
if(monat == 10)
{
if(code == "ä+DLTä" || code == "öÖBFOä" || code == "öDHGT*" || code == "öBGGQ+")
eco = 1;
}
if(monat == 11)
{
if(code == "ä+DLTä" || code == "öÖBFOä" || code == "öDHGT*" || code == "ü+EJR_")
eco = 1;
}
}
if(jahr == 2023)
{
if(monat == 0)
{
if(code == "ÄÜAHNÄ" || code == "ü_FNMä" || code == "AEGKOö" || code == "ÜEDMUÜ")
eco = 1;
}
if(monat == 1)
{
if(code == "ÄÜAHNÄ" || code == "ü_FNMä" || code == "AEGKOö" || code == "üAHGR_")
eco = 1;
}
if(monat == 2)
{
if(code == "ÄÜAHNÄ" || code == "ü_FNMä" || code == "AEGKOö" || code == "ÜDEGPÄ")
eco = 1;
}
if(monat == 3)
{
if(code == "ÄÜAHNÄ" || code == "ü_FNMä" || code == "Ä*DKR*" || code == "ü_ILNö")
eco = 1;
}
if(monat == 4)
{
if(code == "ÄÜAHNÄ" || code == "ü_FNMä" || code == "Ä*DKR*" || code == "öDBKNÄ")
eco = 1;
}
if(monat == 5)
{
if(code == "ÄÜAHNÄ" || code == "ü_FNMä" || code == "Ä*DKR*" || code == "üAFHPö")
eco = 1;
}
if(monat == 6)
{
if(code == "ÄÜAHNÄ" || code == "ü+DJT_" || code == "_CFKPÄ" || code == "Ü_IKQö")
eco = 1;
}
if(monat == 7)
{
if(code == "ÄÜAHNÄ" || code == "ü+DJT_" || code == "_CFKPÄ" || code == "ÜEHGNÄ")
eco = 1;
}
if(monat == 8)
{
if(code == "ÄÜAHNÄ" || code == "ü+DJT_" || code == "_CFKPÄ" || code == "üBHKNÖ")
eco = 1;
}
if(monat == 9)
{
if(code == "ÄÜAHNÄ" || code == "ü+DJT_" || code == "öÜCJQÜ" || code == "ÖBHGN_")
eco = 1;
}
if(monat == 10)
{
if(code == "ÄÜAHNÄ" || code == "ü+DJT_" || code == "öÜCJQÜ" || code == "öBGGQ+")
eco = 1;
}
if(monat == 11)
{
if(code == "ÄÜAHNÄ" || code == "ü+DJT_" || code == "öÜCJQÜ" || code == "ü+EJR_")
eco = 1;
}
}
if(jahr == 2022)
{
if(monat == 0)
{
if(code == "Ä*FLUA" || code == "ü_EILÖ" || code == "**DOTÜ" || code == "ÖÖEJTä ")
eco = 1;
}
if(monat == 1)
{
if(code == "Ä*FLUA" || code == "ü_EILÖ" || code == "**DOTÜ" || code == "ÖC_HM*")
eco = 1;
}
if(monat == 2)
{
if(code == "Ä*FLUA" || code == "ü_EILÖ" || code == "**DOTÜ" || code == "A*ELQÖ")
eco = 1;
}
if(monat == 3)
{
if(code == "Ä*FLUA" || code == "ü_EILÖ" || code == "*EHOUü" || code == "_+ALMÖ")
eco = 1;
}
if(monat == 4)
{
if(code == "Ä*FLUA" || code == "ü_EILÖ" || code == "*EHOUü" || code == "A+IKPA")
eco = 1;
}
if(monat == 5)
{
if(code == "Ä*FLUA" || code == "ü_EILÖ" || code == "*EHOUü" || code == "ÄDCFUü")
eco = 1;
}
if(monat == 6)
{
if(code == "Ä*FLUA" || code == "_EGKMA" || code == "*DHON*" || code == "ÖAILQA")
eco = 1;
}
if(monat == 7)
{
if(code == "Ä*FLUA" || code == "_EGKMA" || code == "*DHON*" || code == "AD_IQ*")
eco = 1;
}
if(monat == 8)
{
if(code == "Ä*FLUA" || code == "_EGKMA" || code == "*DHON*" || code == "ÜBELQÄ")
eco = 1;
}
if(monat == 9)
{
if(code == "Ä*FLUA" || code == "_EGKMA" || code == "üE_NTä" || code == "ÄAAFUÖ")
eco = 1;
}
if(monat == 10)
{
if(code == "Ä*FLUA" || code == "_EGKMA" || code == "üE_NTä" || code == "ÄÖBNMÜ")
eco = 1;
}
if(monat == 11)
{
if(code == "Ä*FLUA" || code == "_EGKMA" || code == "üE_NTä" || code == "**ALSÄ")
eco = 1;
}
}
}
function clearMarkers() {
setAllMap(null);
}
// Shows any markers currently in the array.
function showMarkers() {
setAllMap(map);
}
// Deletes all markers in the array by removing references to them.
function deleteMarkers() {
clearMarkers();
markerort = [];
}
//////////////////////////////////////////////////////////////////////////////////////////////////
function prf() {
var strok = getFile("Radpl");
return strok;
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; iPosition:
Lat: " + event.latLng.lat() + "
Lon: " + event.latLng.lng() + "
Hoehe: " + results[0].elevation.toFixed(2) + " m" );
//infowindow.setPosition(clickedLocation);
//infowindow.open(map);
///////neu WayPoint Fenster oeffnen mit Hoehe und Koordinaten
el = document.getElementById("overlaywp");
el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
document.getElementById("wname").value = '';
document.getElementById("wtext").value = '';
document.getElementById("ilat").value = event.latLng.lat().toFixed(8);
document.getElementById("ilon").value = event.latLng.lng().toFixed(8);
document.getElementById("ihoehe").value = results[0].elevation.toFixed(2);
/////////////////////////////
} else {
alert("Keine Hoehe ermittelbar");
}
} else {
alert("Hoehenermittlung fehlgeschlagen wegen: " + status);
}
});
}
///////////////////////////////////////////////////////////////////////
function gpxhoehe() {
//alert("gpxhoehe");
// Hoehendaten der geklickten Route ermitteln und in arrayhoehe einstellen
// MVCArray Points in normalen Array umwandeln, da Hoehenlinie nicht ueber MVC-Array dargestellt werden kann
arrayhoehe.length = 0;
var locations2 = [];
var path = poly.getPath();
for (var i = 0; i < path.getLength(); i++) {
var lat = path.getAt(i).lat().toFixed(6);
var lng = path.getAt(i).lng().toFixed(6);
var newlatlng = new google.maps.LatLng(lat, lng);
locations2.push(newlatlng);
//var koord2 = path.getAt(i);
//locations2.push(koord2);
//alert("Koord2: " + koord2 + "Pathlaenge: " + path1.getLength());
}
// Create a LocationElevationRequest object using the array's one value
var positionalRequest = {
'locations': locations2
}
// Initiate the location request
elevator.getElevationForLocations(positionalRequest, function(results, status) {
if (status == google.maps.ElevationStatus.OK) {
//alert("Hoehe geliefert");
for (var i = 0; i < results.length; i++) {
var hoehe2 = results[i].elevation.toFixed(2);
arrayhoehe.push(hoehe2);
}
}
});
}
function chk() {
if(eco == 0)
{
alert("Bitte gültigen Download-Code eingeben!\nGgfs. Code bei mir anfordern.\n\nInfotext hierzu unterhalb der Karte.");
document.form.ndlc.focus();
return false;
}
if(document.form.nid.value < 350 || document.form.nid.value > 499)
{
alert("Bitte geben Sie ihre ID ein!\nDiese erhalten Sie zusammen mit dem Download-Code.");
document.form.nid.focus();
return false;
}
}
///////////////////////////////////////////////////////////////////////
// Routine fuer GPX-Ausgabe
function gpxdaten() {
fco = document.form.ndlc.value;
userid = document.form.nid.value;
co();
var ok ='';
var path = poly.getPath();
///////Anmeldezwang deaktiviert ////////////////////////////////////////////
//var user1=getCookie("gpxmail");
//var user2=getCookie("gpxhash");
// if (user1 != "" && user2 != "")
//{ //ist die Anmeldung aktiv
if (path.getLength() < 2) {
alert('Hinweis:\n\nVor dem Download muss zuerst eine Route \nin der Karte erstellt werden.');
html = ' ';
htmlr = ' ';
ok = ' ';
document.getElementById('versteckt').value=html;
document.getElementById('versteckt1').value=htmlr;
document.getElementById('versteckt2').value=ok;
}
else {
// string bilden mit den gpxdaten
if(eco == 1 && (document.form.nid.value > 349 && document.form.nid.value < 500) )
{
setCookie("userid", userid, 365);
setCookie("usercode", fco, 365);
finame=prompt(" Bitte hier den Dateinamen -ohne Zusatz .gpx- eingeben","");
}
if (finame == '')
{ finame = 'Strecke' }
ok = 'ok';
var zaepoint = 1;
var html = '<\?xml version="1.0" encoding="UTF-8"?>\n';
var htmlr = '<\?xml version="1.0" encoding="UTF-8"?>\n';
html += '\n';
htmlr += 'xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">\n';
//// falls vorhanden, individuell erzeugte Wegpunkte ausgeben
if(wpmarkers.length >= 1)
{
for (var i in wpmarkers)
{
lat6 = wpmarkers[i].position.lat();
lat6 = lat6.toFixed(6);
lon6 = wpmarkers[i].position.lng();
lon6 = lon6.toFixed(6);
wpname = wpinfname[i];
wpele = wphoehe[i];
if(wpele > 0)
{}
else {wpele = 0}
// wptext = wpinftext[i].replace( /\n/gi, "<br/>" ); //fuer die GPX-XML-Datei ist eine Umwandl. Zeilenumbruch \n (aus Form-Textarea) (Html =
) in <br/> notwendig!!!
wptext = wpinftext[i].replace( /\n/gi, " " ); //stelle Blank ein, ist fuer den Austausch z.B. Garmin BC besser
wpsymb = wpinfsymb[i];
html += '' + '' + wpele + '' + '' + wpname + '' + '' + wptext + '' + '' + wpsymb + '' + '\n';
//wegpunkte auch in Route einfuegen // htmlr += '' + '' + wpname + '' + '' + wptext + '' + '' + wpsymb + '' + '\n';
}
}
////////////////////////////////////////////////////////////////////////
html += '\n';
htmlr += '\n';
html += '' + finame + '\n';
htmlr += '' + finame + '\n';
html += ' \n';
for (var i = 0; i < path.getLength(); i++)
{
var slat = path.getAt(i).lat();
var slng = path.getAt(i).lng();
var shoe = arrayhoehe[i];
if (arrayhoehe.length != path.getLength() )
{ shoe = 0 }
if (arrayhoehe.length == 0)
{ shoe = 0 }
html += ' ' + '' + shoe + '';
html += ' \n';
htmlr += ' ' + '' + shoe + '';
//htmlr += ' ';
htmlr += ' Point' + zaepoint ;
htmlr += ' \n';
zaepoint = zaepoint + 1;
}
html += ' \n';
html += '\n';
htmlr += '\n';
html += '\n';
htmlr += '\n';
document.getElementById('versteckt').value=html;
document.getElementById('versteckt1').value=htmlr;
document.getElementById('versteckt2').value=ok;
document.getElementById('versteckt3').value=finame;
} //end else
//} //end Anmeldung vorhanden ist jetzt deaktiviert
//else //keine Anmeldung
// {
// alert ("Bitte melden Sie sich erst an, bevor Sie eine geplante Route herunterladen.");
// }
} //end gpxdaten
///////////////////////////////////////////////////////////////////////
/////bei GPX-Upload ///////////////////////////////////////////////////////
////Zwischenspeichern evtl. vorhandener Trackpunkte auch im GPX-Format, um die hochgeladene GPX-Datei anschliessend daran anzuhaengen
function gpxdaten1() {
//alert("Hallo Anfang");
var ok1 ='';
var path = poly.getPath();
if (path.getLength() < 2 ) {
//alert("Hallo kein Path!!!");
html1 = ' ';
ok1 = ' ';
document.getElementById('zversteckt').value=html1;
document.getElementById('zversteckt2').value=ok1;
}
else {
// string bilden mit den gpxdaten
var path = poly.getPath();
ok1 = 'ok';
//alert("Pathlaenge " + path.getLength() );
var html1 = '<\?xml version="1.0" encoding="UTF-8"?>\n';
html1 += '\n';
//// falls vorhanden, individuell erzeugte Wegpunkte ausgeben
if(wpmarkers.length >= 1)
{
//alert("WP-Markers");
for (var i in wpmarkers)
{
lat6 = wpmarkers[i].position.lat();
lat6 = lat6.toFixed(6);
lon6 = wpmarkers[i].position.lng();
lon6 = lon6.toFixed(6);
wpname = wpinfname[i];
wpele = wphoehe[i];
if(wpele > 0)
{}
else {wpele = 0}
// wptext = wpinftext[i].replace( /\n/gi, "<br/>" ); //fuer die GPX-XML-Datei ist eine Umwandl. Zeilenumbruch \n (aus Form-Textarea) (Html =
) in <br/> notwendig!!!
wptext = wpinftext[i].replace( /\n/gi, " " ); //fuer die GPX-XML-Datei Umwandl. Zeilenumbruch \n (aus Form-Textarea), stelle Blank ein, ist wegen Austausch Garmin-BC besser
wpsymb = wpinfsymb[i];
html1 += '' + '' + wpele + '' + '' + wpname + '' + '' + wptext + '' + '' + wpsymb + '' + '\n';
//wegpunkte auch in Route einfuegen // htmlr += '' + '' + wpname + '' + '' + wptext + '' + '' + wpsymb + '' + '\n';
}
}
////////////////////////////////////////////////////////////////////////
html1 += '\n';
html1 += 'Strecke\n';
html1 += ' \n';
for (var i = 0; i < path.getLength(); i++)
{
var slat = path.getAt(i).lat();
var slng = path.getAt(i).lng();
var shoe = arrayhoehe[i];
if (arrayhoehe.length != path.getLength() )
{ shoe = 0 }
if (arrayhoehe.length == 0)
{ shoe = 0 }
html1 += ' ' + '' + shoe + '';
html1 += ' \n';
}
html1 += ' \n';
html1 += '\n';
html1 += '\n';
document.getElementById('zversteckt').value=html1;
document.getElementById('zversteckt2').value=ok1;
} //end else
} //end gpxdaten1
/////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Remove the green rollover marker when the mouse leaves the chart
function clearMouseMarker() {
if (mousemarker != null) {
mousemarker.setMap(null);
mousemarker = null;
}
}
//var m1 = "7%öÄaLP RE8:.R_:8=+E'8.*+0)L'?L%!ß?(P&++38T";
var m1 = "7%öÄDGPT!X).)(X;).öD)=.(E.4%R%4Pö&Ü4&TüD.7.Z";
//var m2 = "7%öÄaLPö&Ü4H&Ä?-&öÜ?4%/;AD(ß/f";
var m2 = "7%öÄDGPT*ü,8LüA4'ä*C48öä/:H&ÜäL";
//var m3 = "7ßÄÜcNR?__ÄJ+AA4ßN'äNß!öä(R9;F4R";
//var m4 = "7%öÄaLP RE8:.RE7?='?'9&Ü?(%L!_.P D&,8T";
var m4 = "7%öÄDGPT!X).)(X),üö%4=-üC4&öR&;!T!J2:.Z";
//var m5 = "7%öÄaLPö&Ü4H)ü*=.8R%4P D&,.=/f";
var m5 = "7%öÄDGPT*ü,8LB/?!8ÜÖ47öÜ/8:äR_' T!J2:!öäL";
//var m6 = "7%öÄaLP RE8:.RE7?='?'9&Ü?(%L!_.P&_E3(&ÜDL";
var m6 = "7%öÄDGPT!X).)(X),üö%4=-üC4&öR&;!TüF)7&üC(P";
//var m7 = "7%öÄaLP RE8:.RE7?='?'9&Ü?(%L!_.P);*3& ;A4P";
var m7 = "7%öÄDGPT!X).)(X),üö%4=-üC4&öR&;!Tß/-7ä!/:8T";
//var m8 = "7%öÄaLPD_+0)äR?/P";
var m8 = "7%öÄDGPT*ü,8ä(C=8ßRP/!8ÄDD6&äf";
//var m9 = "7%öÄaLP&Ä?-%&Ä_.4%R_' T";
var m9 = "7%öÄDGPTüA4'öüA;!8ÄX;=;Z";
var ma = "7%öÄDGPTä/:&.ÜG4=Lä/:üL!KL%üÜü(%Mäf";
//var ma = "7%öÄaLP.!ND6,öX46/;A(H,(fw!äu/)8Ö;JD4ä=ID-%/jt.)('M";
//var ma1 = "Nx!ß?yQ";
//var ma2 = "N3&ü+l8Ä(ÜM";
//var ma3 = "NiÜÄ?'..ö&4Q(ü+:4ä+hm4%6E?:.a4oqxo.sSBF-;?ß&D).(";
//var mb = "7%öÄaLPö&Ü4H/*=.4%R&ßP/*=.4%nE8:.+f";
var mb = "7%öÄDGPT!X).)(Y2ü ß_(!LüA4'ä*C48öä/:H-Üf2ü ß_(!T";
var mc = "7%öÄaLPÖ;*38ßÜ?8%(;C)8L'?L%&Ä_L";
var md = "7%öÄaLPöü_,&.ÜG4=LüC6Pö&Ü4&T=ü 89&Ö4P";
//var me = "7%öÄaLP8RE8:.+X&!-ß/1&LüC6P:&Ö45!??L";
var me = "7%öÄDGPT*ü,8äRH.9);=(H&ÜäL,!??1.((f";
//var mf = "7%öÄaLPö&Ü4HÜöYE)=AÖ0=ö(Y._8R%4Pö&Ü4 .öf";
var mf = "7%öÄaLPö&Ü4H/(+;!8ÄDD7.ZE8:./?-P";
var mg = "D(ü*%;(ß;&).Ä(X2(/ZA;=ö;ÜLä!öE4=T";
//var mh = "7%öÄaLPö&Ü4H)ü*=.8R%4P:&Ö8';Z";
var mh = "7%öÄDGPT*ü,8LB/?!8ÜÖ47öÜ/8:äR_' T=ü .=/f";
//var mi = "7%öÄaLP8RE8:.+X&!-ß/1&LüC6P:&Ü,&:;%8';Z";
var mi = "7%öÄDGPT*ü,8äRH.9);=(H&ÜäL,!ßÜ(,8'ü- T";
//var mj = "7%öÄaLPö&Ü4&LüA4'ä(/.4%R_' T+?0!8ÜÖL";
var mj = "7%öÄDGPT*ü,8äR_:8=+?0!8ÄX;=;ZD44/;C P";
//var mk = "7%öÄaLPö&Ü4&LüA4'ä(/.4%R_' T+A;=öZ";
var mk = "7%öÄDGPT*ü,8äR_:8=+?0!8ÄX;=;ZD:(ß*f";
var ml = "7%öÄDGPTBH&H&Ä?-&=üH.4%R_' TÄü(%.+f";
//var ml = "7%öÄDGPTBH&H&Ä?-&=üH.4%R_' TüA4'äö_&!8ÄY;ß.ÜÜ0üT";
var mm = "7%öÄDGPT;A8H/;A?H Ef=ÜTä/:%!ß?(P&_E3(&ÜfüAFZ";
//var mn = "7%öÄaLPö&Ü4HÖ;J.4ß??3%ß;ü,&LüC6P/*=L";
var mn = "7%öÄDGPT*ü,8LB/?!8ÜÖ47öÜ/8:äR_' TäE1P";
var mo = "7%öÄDGPT*ü,8LäE1!8ÄX2ÄTäE1!8Ät).)(DL";
var mp = "7%öÄDGPT;X).)(DD(%(*'4!ßH0ü/;AD(ß/f(%8ö%0=,Z";
var mapik = "P4%&Ö4üU78Üyh50E80*Ö9kösJ9Ümn&ÖiÜN*lt)&)-*:E5g4'S:2";
var mapiw = "D)=/j0)!???QILNö8I)%ö7_'P5CH:/öADH/4C.FL2CEH";
var mapir1 = "D)=/j0)!???QF)U4BIOL57A!PA*FOQ_8G(%0Ö-)M_6C!";
var mapir2 = "D)=/j0)!???QEK=ÄÖE'Lö9-!PÖ99O/ä6I'&1C HSÄ8AM";
var mapir3 = "D)=/j0)!???Q-HMAD,Lß*DB;P17D;=0BII?1D9H&__B)";
var mapir4 = "D)=/j0)!???QBHP57IFRA4D'PAABNQADEMMÄ68Gß498G";
//////////////////////////////////////////////////////////////////////
function drawPath() {
// Create a new chart in the elevation_chart DIV.
// chart = new google.visualization.ColumnChart(document.getElementById('elevation_chart')); wurde integriert in buildMap-Routine wegen laufendem Marker Chart-Strecke
// MVCArray Points in normalen Array umwandeln, da Hoehenlinie nicht �ber MVC-Array dargestellt werden kann
var locations1 = [];
var path = poly.getPath();
for (var i = 0; i < path.getLength(); i++) {
var lat = path.getAt(i).lat().toFixed(6);
var lng = path.getAt(i).lng().toFixed(6);
var newlatlng = new google.maps.LatLng(lat, lng);
locations1.push(newlatlng);
//var koord = path.getAt(i); //hier erhalte ich das
//locations1.push(koord); //die ungek�rzten Koordinaten mit 12 Nachkommastellen
}
// Create a PathElevationRequest object mit dem array locations1, gefuellt dem MVCArray Points
// Ask for 512 samples along that path.
var pathRequest = {
'path': locations1,
'samples': 512
}
// Initiate the path request.
elevator.getElevationAlongPath(pathRequest, plotElevation);
}
// Takes an array of ElevationResult objects, draws the path on the map
// and plots the elevation profile on a Visualization API ColumnChart.
function plotElevation(results, status) {
//alert("status" + status);
if (status == google.maps.ElevationStatus.OK) {
elevations = results;
// Extract the elevation samples from the returned results
// and store them in an array of LatLngs.
var elevationPath = [];
for (var i = 0; i < results.length; i++) {
elevationPath.push(elevations[i].location);
}
// Display a polyline of the elevation path.
var pathOptions = {
path: elevationPath,
strokeColor: '#0000CC',
opacity: 0.4,
map: map
}
//polyline = new google.maps.Polyline(pathOptions); extra polyline wird nicht benoetigt, da schon ueber clicks vorhanden, ausgeblendet
// Extract the data from which to populate the chart.
// Because the samples are equidistant, the 'Sample'
// column here does double duty as distance along the
// X axis.
var totalLength = Math.floor(poly.inKm()*10)/10;
if (totalLength < 1) {
totalLength = Math.floor(poly.inKm()*1000)/1000;
}
//neu
var data = new google.visualization.DataTable();
data.addColumn('number', 'Distance');
data.addColumn('number', 'Elevation');
data.addColumn({type: 'string', role: 'tooltip'});
for (var i = 0; i < results.length; i++) {
x = Math.round(1000*totalLength * i/SAMPLES)/1000;
y = Math.round(elevations[i].elevation*10)/10;
data.addRow([x,y, y + " m Hoehe bei km " + Math.round(x*100)/100]);
}
//Ende neu
// Draw the chart using the data within its DIV.
document.getElementById('elevation_chart').style.display = 'block';
chart.draw(data, {
// width: 640,
height: 250,
legend: 'none',
titleY: 'Hoehe (m)',
titleX: 'Streckenlaenge gesamt: ' + totalLength + ' km',
pointSize: 2,
});
}
}
function overlaywp() { //schaltet von sichtbar auf unsichtbar um, je nach Status
el = document.getElementById("overlaywp");
el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";
document.getElementById("wname").value = '';
document.getElementById("wtext").value = '';
//document.getElementById("symbname").value = ''; //auf Userwunsch nach Eingabe Inhalt stehen lassen Dr. Coutier
}
function showwp() {
indivsymb = "no";
zwname = document.getElementById("wname").value;
zwtext = document.getElementById("wtext").value;
if(document.getElementById('r0').checked)
{
if(document.getElementById('symbname') > '')
{
zicon = document.getElementById("symbname").value;
indivsymb = "ja";
}
else
{
zicon = "leer";
}
}
if(document.getElementById('r1').checked)
{zicon = document.getElementById("r1").value;}
if(document.getElementById('r2').checked)
{zicon = document.getElementById("r2").value;}
if(document.getElementById('r3').checked)
{zicon = document.getElementById("r3").value;}
if(document.getElementById('r4').checked)
{zicon = document.getElementById("r4").value;}
if(document.getElementById('r5').checked)
{zicon = document.getElementById("r5").value;}
if(document.getElementById('r6').checked)
{zicon = document.getElementById("r6").value;}
if(document.getElementById('r7').checked)
{zicon = document.getElementById("r7").value;}
if(document.getElementById('r8').checked)
{zicon = document.getElementById("r8").value;}
if(document.getElementById('r9').checked)
{zicon = document.getElementById("r9").value;}
if(document.getElementById('r10').checked)
{zicon = document.getElementById("r10").value;}
if(document.getElementById('r11').checked)
{zicon = document.getElementById("r11").value;}
if(document.getElementById('r12').checked)
{zicon = document.getElementById("r12").value;}
if(document.getElementById('r13').checked)
{zicon = document.getElementById("r13").value;}
if(document.getElementById('r14').checked)
{zicon = document.getElementById("r14").value;}
if(document.getElementById('r15').checked)
{zicon = document.getElementById("r15").value;}
if(document.getElementById('r16').checked)
{zicon = document.getElementById("r16").value;}
if(document.getElementById('r17').checked)
{zicon = document.getElementById("r17").value;}
if(document.getElementById('r18').checked)
{zicon = document.getElementById("r18").value;}
if(document.getElementById('r19').checked)
{zicon = document.getElementById("r19").value;}
if(document.getElementById('r20').checked)
{zicon = document.getElementById("r20").value;}
if(document.getElementById('r21').checked)
{zicon = document.getElementById("r21").value;}
if(document.getElementById('r22').checked)
{zicon = document.getElementById("r22").value;}
//ausgewaehltes Icon verwenden
if (zicon == "leer" || indivsymb == "ja")
{
var flagIcon = new google.maps.MarkerImage("Icons/brown-dot.png");
}
else
{
var flagIcon = new google.maps.MarkerImage("Icons/" +zicon +".png");
//flagIcon.size = new google.maps.Size(35, 35);
//flagIcon.anchor = new google.maps.Point(0, 35);
}
//LatLon und Wegpunktname und Beschreibung aus WP-Form holen
zwlat = document.getElementById("ilat").value;
zwlon = document.getElementById("ilon").value;
zwhoehe = document.getElementById("ihoehe").value;
zwwpname = document.getElementById("wname").value;
zwwptext = document.getElementById("wtext").value;
var lat = parseFloat(zwlat); //von text auf numerisch
var lng = parseFloat(zwlon);
var latlng = new google.maps.LatLng(lat, lng);
var wpmarker = new google.maps.Marker({
position: latlng,
icon: flagIcon,
map: map
});
wpmarkers.push(wpmarker);
wphoehe.push(zwhoehe);
wpinfname.push(zwwpname);
wpinftext.push(zwwptext);
wpinfsymb.push(zicon);
overlaywp() // dies schaltet die Form jeweils von sichtbar auf unsichtbar um
// Listener fuer Linksclick auf Wegpunkt = Wegpunkt loeschen
google.maps.event.addListener(wpmarker, "click", function() {
for (var d = 0, o; o = wpmarkers[d]; d++) {
if (o == wpmarker) {
wpmarker.setMap(null);
// Remove removed point from markers array
wpmarkers.splice(d, 1);
// Loeschen removed point from wegpunkthoehe array
wphoehe.splice(d, 1);
// Loeschen removed point from wegpunktbeschreibung name array
wpinfname.splice(d, 1);
// Loeschen removed point from wegpunktbeschreibung Text array
wpinftext.splice(d, 1);
// Loeschen removed point from wegpunktbeschreibung Symb array
wpinfsymb.splice(d, 1);
break;
}
}
});
// Listener fuer Rechtsklick auf Wegpunkt = Name + Beschreibung des Wegpunktes anzeigen
google.maps.event.addListener(wpmarker, "rightclick", function() {
for (var d = 0, o; o = wpmarkers[d]; d++) {
if (o == wpmarker) {
// Anzeigen Wegpunktname und Beschreibung
var wp_infowindow = new google.maps.InfoWindow();
zwptext = wpinftext[d].replace( /\n/gi, "
" ); //Zeilenvorschub \n aus Form-Textarea in
fuer Infofenster umwandeln, fuer GPX-Datei wiederum in <br/>
wp_infowindow.setContent(wpinfname[d] + "
" + wpinftext[d] + "
Hoehe: " + wphoehe[d] );
wp_infowindow.open(map, o);
break;
}
}
});
} //end showwp
function setMapOnAll(map) {
for (var i = 0; i < wpmarkers.length; i++) {
wpmarkers[i].setMap(map);
}
}
// Toggle Track-Anzeige auf Karte (verbergen/anzeigen)
function toggleTrackanz() {
var img_src = document.getElementById('iconauge').getAttribute('src');
if(img_src == "augeauf.png")
{
clearOverlays();
document.getElementById('iconauge').src = "augezu.png";
}
if(img_src == "augezu.png")
{
showOverlays();
document.getElementById('iconauge').src = "augeauf.png";
}
}
// Toggle Marker-Anzeige auf Karte (verbergen/anzeigen)
function toggleMarkeranz() {
var img_srcm = document.getElementById('iconaugem').getAttribute('src');
if(img_srcm == "augeauf.png")
{
loeMarker();
document.getElementById('iconaugem').src = "augezu.png";
}
if(img_srcm == "augezu.png")
{
zeigMarker();
document.getElementById('iconaugem').src = "augeauf.png";
}
}
// Track und Marker ausblenden Removes the overlays from the map, but keeps them in the array
function clearOverlays() {
if (markers) {
for (i in markers) {
markers[i].setMap(null);
}
}
if (poly) {
var path = poly.getPath();
poly.setMap(null);
}
}
// Marker ausblenden Removes the overlays from the map, but keeps them in the array
function loeMarker() {
if (markers) {
for (i in markers) {
markers[i].setMap(null);
}
}
}
// Track und Marker wieder einblenden Shows any overlays currently in the array
function showOverlays() {
if (markers) {
for (i in markers) {
markers[i].setMap(map);
}
}
if (poly) {
var path = poly.getPath();
poly.setMap(map);
}
}
// Marker wieder einblenden Shows any overlays currently in the array
function zeigMarker() {
if (markers) {
for (i in markers) {
markers[i].setMap(map);
}
}
}
window.onload = buildMap;
//////////////////////////////////////////////////////////////////////
//]]>