var map = null, mgr = null, bmark = [], dmark = [], markerOption = []; //var directionsPanel; var directions; var CIcon = new GIcon(G_DEFAULT_ICON); markerOption[0] = { icon : CIcon }; CIcon = new GIcon(G_DEFAULT_ICON); CIcon.image = "img/1/GeoDaten/obeta2.png"; markerOption[1] = { icon : CIcon }; CIcon = new GIcon(G_DEFAULT_ICON); CIcon.image = "img/1/GeoDaten/eldis.png"; markerOption[4] = { icon : CIcon }; markerOption[5] = { icon : CIcon }; var $wd_content = null, $content = null, $map_canvas = null, $stations_canvas, $directions_canvas; // filled in initialize() var resizeMapCanvas = function() { console.log('resizeMapCanvas()'); var height = $wd_content.outerHeight() - (parseInt($wd_content.css('padding-top').match(/\d+/)) || 0) - (parseInt($wd_content.css('padding-bottom').match(/\d+/)) || 0) - (parseInt($wd_content.css('border-top-width').match(/\d+/)) || 0) - (parseInt($wd_content.css('border-bottom-width').match(/\d+/)) || 0) - 20 // fixes wrong height in IE, maybe caused by some padding or margin - $content.outerHeight(); if ($stations_canvas.is(':visible')) { var sHeight = $stations_canvas.outerHeight(); // console.log('height=', height, ', sHeight=', sHeight); height = Math.max(height, sHeight); } $map_canvas.css('height', height); }; var initialize = function() { if (!GBrowserIsCompatible()) return; map = new GMap2(document.getElementById("map_canvas")); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(52.540787, 13.390108), 10); directions = new GDirections(map, document.getElementById("directions")); GDownloadUrl("backend/geoXMLStandorte.html", function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { checkXML(xml, markers[i]); } }); //loadData(document.getElementById("KAdresse").options[0].value); $wd_content = $('#wd-content'); $content = $('.content'); $map_canvas = $('#map_canvas'); $stations_canvas = $('#stations_canvas'); $directions_canvas = $('#directions_canvas'); resizeMapCanvas(); // resize first time var resizeTimer = null; $(window).resize(function() { // resize on window.resize() if (resizeTimer) clearTimeout(resizeTimer); resizeTimer = setTimeout(resizeMapCanvas, 200); }); // // bindings // var $kAddresse = $('#KAdresse'); // hinterlegte Adressen var $suchButton = $('#aSuchstring'); var $suchInput = $('#Suchstring'); // search field "Adresseingabe" $kAddresse.change(function(ev) { optionVal = $('#' + ev.target.id + ' option:selected').val() || ''; if (optionVal != '0') { // load data if not "Bitte auswählen" loadData(optionVal); } }); $suchButton.click(function(){ if ($kAddresse.length == 1) { $kAddresse[0].selectedIndex = 0; } /*inputData(escape($suchInput.val()));*/ inputData(encodeURI($suchInput.val())); // encodeURI() ersetzt escape(), weil nicht utf-8 tauglich! }); $suchInput.keydown(function(e) { if (e.keyCode == 13) { $suchButton.trigger('click'); return false; } }); }; // var loadData = function(comboBoxValue) { console.log('loadData() comboBoxValue=' + comboBoxValue); if (!GBrowserIsCompatible()) return; directions.clear(); //document.getElementById("stations_canvas").style.display = "block"; //document.getElementById("directions_canvas").style.display = "none"; map = new GMap2($map_canvas[0]); //map.setCenter(new GLatLng(52.540787,13.390108), 10); directions = new GDirections(map, document.getElementById("directions")); if (mgr != null) { mgr.clearMarkers(); bmark = []; //document.getElementById("stations_canvas").style.display = "block"; //document.getElementById("directions_canvas").style.display = "none"; } GDownloadUrl("backend/geoXML.html?combo=" + comboBoxValue, function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i=0; i < markers.length; i++) { checkXML(xml, markers[i]); } }); }; var inputData = function(inp) { console.log('inputData() ' + inp); if (!GBrowserIsCompatible()) return; var f = document.getElementById("firma").value; var k = document.getElementById("kdnr").value; map = new GMap2($map_canvas[0]); directions = new GDirections(map, document.getElementById("directions")); directions.clear(); if (mgr != null) { mgr.clearMarkers(); bmark = []; } GDownloadUrl("backend/geoXMLInput.html?firma=" + f + "&kdnr=" + k + "&input=" + inp, function(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for ( var i = 0; i < markers.length; i++) { checkXML(xml, markers[i]); } }); } var checkXML = function(xml, markers) { console.log('checkXML() xml=' + xml + ', markers=' + markers); //alert(markers.getAttribute("code")); switch (markers.getAttribute("code")) { case "104": //Fehlerhafte anfrage! alert("Fehlerhafte anfrage!"); break; case "204": //Keine Datenbankverbindung! alert("Keine Datenbankverbindung!"); break; case "304": //Keine Kundendaten gefunden! alert("Keine Kundendaten gefunden!"); break; case "404": //Keine Geodaten zur Adresse gefunden! alert("Keine Geodaten zur Adresse gefunden!"); break; case "200": $stations_canvas.show(); $directions_canvas.hide(); setMarkers(xml, markers); break; case "ALL": setMarkers(xml); break; default: //unbekannter Fehler! alert("unbekannter Fehler!"); break; } }; var setMarkers = function(xml, markers) { console.log('setMarkers() xml=' + xml + ', markers=' + markers); if (markers != null) { var kp1 = parseFloat(markers.getAttribute("lat")); var kp2 = parseFloat(markers.getAttribute("lng")); var kmar = new GMarker(new GLatLng(kp1, kp2), markerOption[0]); var khtml = "
" + document.getElementById("namek").innerHTML + "
" + "
"; khtml += document.getElementById("strassek").innerHTML + "
"; khtml += document.getElementById("plzk").innerHTML + " "; khtml += document.getElementById("ortk").innerHTML + "
"; kmar.bindInfoWindowHtml(khtml); bmark.push(kmar); setShow(kp1, kp2, 'k'); } setStandortDetails(xml); var standort = xml.documentElement.getElementsByTagName("standort"); var sdetail = xml.documentElement.getElementsByTagName("sdetail"); for ( var i = 0; i < standort.length; i++) { switch (standort[i].getAttribute("code")) { case "504": //Keine Standorte zur Adresse gefunden! alert("Keine Standorte zur Adresse gefunden!"); break; case "200": var p1 = parseFloat(standort[i].getAttribute("lat")); var p2 = parseFloat(standort[i].getAttribute("lng")); //var xxp1 = parseFloat(standort[i].getAttribute("lat")); //var xxp2 = parseFloat(standort[i].getAttribute("lng")); var n = standort[i].getAttribute("name"); var mar = new GMarker(new GLatLng(p1, p2), markerOption[parseInt(standort[i].getAttribute("firma"))]); //alert(standort[i].getAttribute("name") + " --> p1 = " + p1 + " / p2 = " + p2); if (markers != null) { var html = "
" + document.getElementById("name" + i).innerHTML + "
" + "
"; html += document.getElementById("strasse" + i).innerHTML + "
"; html += document.getElementById("plz" + i).innerHTML + " "; html += document.getElementById("ort" + i).innerHTML + "
"; mar.bindInfoWindowHtml(html); //alert(html); setDistance(kp1, kp2, p1, p2, i); setShow(p1, p2, i); setRoute(kp1, kp2, p1, p2, i); } else { var html = "
"; html += ""; html += ""; html += "
 
"; html += parseToHTML(sdetail[i].getAttribute("strasse")) + "
"; html += parseToHTML(sdetail[i].getAttribute("plz")) + " "; html += parseToHTML(sdetail[i].getAttribute("ort")) + "
"; html += "
"; mar.bindInfoWindowHtml(html); GEvent.bind(mar, "click", map, function(marker) { map.setCenter(marker, 16); //map.openInfoWindow(marker, html); }); } bmark.push(mar); break; default: //unbekannter Fehler! alert("unbekannter Fehler!"); break; } } var bounds = xml.documentElement.getElementsByTagName("bounds"); if (bounds.length == 1) { var p1 = new GLatLng(parseFloat(bounds[0].getAttribute("south")), parseFloat(bounds[0].getAttribute("west"))); var p2 = new GLatLng(parseFloat(bounds[0].getAttribute("north")), parseFloat(bounds[0].getAttribute("east"))); var b = new GLatLngBounds(p2, p1); map.setCenter(b.getCenter(), map.getBoundsZoomLevel(b)); } mgr = new MarkerManager(map, { borderPadding : 25 }); mgr.addMarkers(bmark, 6); mgr.refresh(); resizeMapCanvas(); }; /*function createMarker(markers, kp1, kp2, p1, p2, i){ var mar = new GMarker(new GLatLng(p1, p2), markerOption[parseInt(standort[i].getAttribute("firma"))]); if(markers != null){ var html = "
" + document.getElementById("name"+ i).innerHTML + "
" + "
"; html+= document.getElementById("strasse"+ i).innerHTML + "
"; html+= document.getElementById("plz"+ i).innerHTML + " "; html+= document.getElementById("ort"+ i).innerHTML + "
"; mar.bindInfoWindowHtml(html); setDistance(kp1, kp2, p1, p2, i); setShow(p1, p2, i); setRoute(kp1, kp2, p1, p2, i); } else{ GEvent.addListener(mar, 'click', function() { alert(mar.getPoint()); }); } return mar; }*/ var setDistance = function(kp1, kp2, p1, p2, i) { console.log('setDistance() kp1=' + kp1 + ', kp2=' + kp2 + ', p1=' + p1 + ', p2=' + p2 + ', i=' + i); var distance = new GLatLng(kp1, kp2).distanceFrom(new GLatLng(p1, p2)); var d = distance / 1000; if (!isNaN(d)) { document.getElementById("distance" + i).innerHTML = d.toFixed(2); } else { document.getElementById("distance" + i).innerHTML = "(unbekannt)"; } }; var setShow = function(p1, p2, i) { console.log('setShow() p1=' + p1 + ', p2=' + p2 + ', i=' + i); $("#show" + i).click(function(){ map.setCenter(new GLatLng( p1 , p2), 14); return false; }); }; var setRoute = function(kp1, kp2, p1, p2, i) { console.log('setRoute() kp1=' + kp1 + ', kp2=' + kp2 + ', p1=' + p1 + ', p2=' + p2 + ', i=' + i); $("#route" + i).click(function(){ directions.clear(); $("#directions").html(""); $stations_canvas.hide(); if(document.getElementById("KAdresse")!=null){ document.getElementById("KAdresse").selectedIndex = 0; } $directions_canvas.show(); directions.load('from: ' + kp1 + ', ' + kp2 + ' to: ' + p1 + ', ' + p2 ); }); }; var setStandortDetails = function(xml) { console.log('setStandortDetails() xml=' + xml); //alert(xml.documentElement); var standort = xml.documentElement.getElementsByTagName("sdetail"); //alert(standort.length); //for(var i=0; i< standort.length; i++){ for ( var i = 0; i < 3; i++) { document.getElementById("entfernung" + i).style.display = "block"; document.getElementById("anzeigen" + i).style.display = "block"; document.getElementById("name" + i).innerHTML = parseToHTML(standort[i] .getAttribute("name")); document.getElementById("strasse" + i).innerHTML = parseToHTML(standort[i] .getAttribute("strasse")); document.getElementById("plz" + i).innerHTML = parseToHTML(standort[i] .getAttribute("plz")); document.getElementById("ort" + i).innerHTML = parseToHTML(standort[i] .getAttribute("ort")); document.getElementById("telefon" + i).innerHTML = parseToHTML(standort[i] .getAttribute("telefon")); document.getElementById("fax" + i).innerHTML = parseToHTML(standort[i] .getAttribute("fax")); document.getElementById("email" + i).innerHTML = standort[i] .getAttribute("email"); document.getElementById("emaillink" + i).href = "MAILTO:" + standort[i].getAttribute("email"); var oe = []; oe = standort[i].getAttribute("oeffnung").split("_"); document.getElementById("oeffnung" + i).innerHTML = ""; for ( var j = 1; j < oe.length; j = j + 2) { document.getElementById("oeffnung" + i).innerHTML += oe[j] + " " + oe[j + 1] + "
"; } } //alert(typeof(document.getElementById("namek").innerHTML)); var kunde = xml.documentElement.getElementsByTagName("kunde"); //alert("1"); if (typeof (kunde) != "undefined" && kunde.length > 0) { document.getElementById("namek").innerHTML = parseToHTML(kunde[0] .getAttribute("name")); document.getElementById("strassek").innerHTML = parseToHTML(kunde[0] .getAttribute("strasse")); document.getElementById("plzk").innerHTML = parseToHTML(kunde[0] .getAttribute("plz")); document.getElementById("ortk").innerHTML = parseToHTML(kunde[0] .getAttribute("ort")); } //alert("2"); }; var parseToHTML = function(xmlStr) { if (xmlStr == null) return xmlStr; var str = xmlStr.replace("a_", "ä"); str = str.replace("o_", "ö"); str = str.replace("u_", "ü"); str = str.replace("A_", "Ä"); str = str.replace("O_", "Ö"); str = str.replace("U_", "Ü"); str = str.replace("S_", "ß"); return str; }; // onload $(function() { initialize(); });