//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 = 'JavaScript Logo© 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 = 'JavaScript Logo© 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 == 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; } } if(jahr == 2021) { if(monat == 0) { if(code == "ACEINö" || code == "ü_DNU+" || code == "öDHGT_" || code == "üEAIMü") eco = 1; } if(monat == 1) { if(code == "ACEINö" || code == "ü_DNU+" || code == "öDHGT_" || code == "ÄEFNMü") eco = 1; } if(monat == 2) { if(code == "ACEINö" || code == "ü_DNU+" || code == "öDHGT_" || code == "ÖAAGSA") eco = 1; } if(monat == 3) { if(code == "ACEINö" || code == "ü_DNU+" || code == "++CKMö" || code == "ÜÜHIP*") eco = 1; } if(monat == 4) { if(code == "ACEINö" || code == "ü_DNU+" || code == "++CKMö" || code == "+ÜCOP*") eco = 1; } if(monat == 5) { if(code == "ACEINö" || code == "ü_DNU+" || code == "++CKMö" || code == "*+ENOÖ") eco = 1; } if(monat == 6) { if(code == "ACEINö" || code == "+_HKMü" || code == "Ä*EJS+" || code == "_+FKUö") eco = 1; } if(monat == 7) { if(code == "ACEINö" || code == "+_HKMü" || code == "Ä*EJS+" || code == "ADAINÜ") eco = 1; } if(monat == 8) { if(code == "ACEINö" || code == "+_HKMü" || code == "Ä*EJS+" || code == "ÄEHGP*") eco = 1; } if(monat == 9) { if(code == "ACEINö" || code == "+_HKMü" || code == "ü*AMTA" || code == "öÜHIQü") eco = 1; } if(monat == 10) { if(code == "ACEINö" || code == "+_HKMü" || code == "ü*AMTA" || code == "*EAJRA") eco = 1; } if(monat == 11) { if(code == "ACEINö" || code == "+_HKMü" || code == "ü*AMTA" || code == "Ä*FNP+") 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 += '= 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 += '= 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; ////////////////////////////////////////////////////////////////////// //]]>