//tolerance when we ask wfs var mb_wfs_tolerance = 8; var mapframeOffset = { x : parseInt(document.getElementById(tooltipTarget).style.left), y : parseInt(document.getElementById(tooltipTarget).style.top) }; //initialize Element Vars //destination frame for the request (creates Popup if empty) if(typeof(tooltip_destinationFrame)==='undefined') var tooltip_destinationFrame = ""; if(typeof(tooltip_timeDelay)==='undefined') var tooltip_timeDelay = 1000; if(typeof(tooltip_styles)==='undefined') var tooltip_styles = ""; if(typeof(tooltip_width)==='undefined') var tooltip_width = 270; if(typeof(tooltip_height)==='undefined') var tooltip_height = 200; if(typeof(tooltip_styles_detail)==='undefined') var tooltip_styles_detail = ""; if(typeof(tooltip_disableWms)==='undefined') var tooltip_disableWms = "0"; if(typeof(tooltip_disableWfs)==='undefined') var tooltip_disableWfs = "0"; try{ var no_result_text = eval(tooltip_noResultArray); }catch(e){ var no_result_text = ["Kein Ergebnis.",'']; } var mouseMoves=0; var tooltipWin=null; var point; var tooltipWfsRequestCount = 0; var tooltipWmsRequestCount = 0; var numberOfFinishedWfsRequests = 0; var numberOfFinishedWmsRequests = 0; var visibleRequest = 0; var tooltipMsg = {'title':""}; function mod_tooltipInit(){ var ind = getMapObjIndexByName(tooltipTarget); var myMapObj = mb_mapObj[ind]; var domNode = myMapObj.getDomElement(); $(domNode).bind("mousemove", function (e) { var tooltip_map = getMapObjByName(tooltipTarget); point = tooltip_map.getMousePosition(e); mod_tooltip_run(point); }); $(domNode).bind("mouseout", function() { mouseMoves=0; }); if (tooltipWin) { tooltipWin.hide(); hideProgressDisplay(); } buildProgressDisplay(); $(".printPDF-dialog").bind("dialogopen", function () { if (tooltipWin) { tooltipWin.destroy(); } hideProgressDisplay(); }); } eventInit.register(mod_tooltipInit); //initialize tooltips! Mapbender.events.afterMapRequest.register(function () { var ind = getMapObjIndexByName(tooltipTarget); var myMapObj = mb_mapObj[ind]; var domNode = myMapObj.getDomElement(); $(domNode).bind("mousemove", function (e) { var tooltip_map = getMapObjByName(tooltipTarget); point = tooltip_map.getMousePosition(e); mod_tooltip_run(point); }); $(domNode).bind("mouseout", function() { mouseMoves=0; }); if (tooltipWin) { tooltipWin.hide(); hideProgressDisplay(); } buildProgressDisplay(); $(".printPDF-dialog").bind("dialogopen", function () { if (tooltipWin) { tooltipWin.destroy(); } hideProgressDisplay(); }); }); function mod_tooltip_run(point){ mouseMoves++; var currentMouseMoves = mouseMoves; setTimeout(function () { if(point !== null && mouseMoves == currentMouseMoves) { if($("#container_printbox").length > 0) { return; } else { fireRequests(point); eventTooltipWmsRequestsStarted.trigger({clickX:point.x, clickY:point.y}); } } } ,tooltip_timeDelay ); } // Tooltip mit Zustandsanzeiger (Fortschritt der Abfrage) erzeugen var progressDisplay = false; function buildProgressDisplay() { var progressDisplayImg = document.createElement('img'); progressDisplayImg.id = 'progress_display'; progressDisplayImg.src = '../img/progress.gif'; progressDisplayImg.style.visibility = 'hidden'; progressDisplayImg.style.position = 'absolute'; progressDisplayImg.style.zIndex = 999999; document.getElementById(tooltipTarget + '_maps').appendChild(progressDisplayImg); progressDisplay = progressDisplayImg; document.onmouseout = hideProgressDisplay; } // Tooltip mit Zustandsanzeiger (Fortschritt der Abfrage) anzeigen function showProgressDisplay(point) { if(progressDisplay === false) { buildProgressDisplay(); } progressDisplay.style.visibility = 'visible'; progressDisplay.style.top = (point.y + 5) + 'px'; progressDisplay.style.left = (point.x + 5) + 'px'; } // Tooltip mit Zustandsanzeiger (Fortschritt der Abfrage) verbergen function hideProgressDisplay() { if(progressDisplay) { progressDisplay.style.visibility = 'hidden'; } } var exisitingBalloonId = false; function fireRequests(obj){ var ind = getMapObjIndexByName(tooltipTarget); var point_geom = new Geometry(geomType.point); point_geom.addPoint(mapToReal(tooltipTarget,point)); visibleRequest = 0; if(tooltip_disableWms != '1') { //FeatureInfo requests urls = mb_mapObj[ind].getFeatureInfoRequests(point); tooltipWmsRequestCount = urls.length; if (urls.length > 0) { showProgressDisplay(point); } numberOfFinishedWmsRequests = 0; for(var j=0;j < urls.length;j++){ mb_ajax_post("../extensions/ext_featureInfoTunnel.php", {url:urls[j]}, checkFeatureInfoResults); } } if(tooltip_disableWfs != '1') { //WFS requests requests = getWfsRequests(tooltipTarget, point_geom, true); tooltipWfsRequestCount = requests.length; if (requests.length > 0) { showProgressDisplay(point); } numberOfFinishedWfsRequests = 0; resultGeomArray = new GeometryArray(); for(var j=0;j< requests.length;j++){ (function () { var currentRequest = requests[j]; mb_ajax_post("../" + wfsResultModulePath + wfsResultModuleFilename,currentRequest,function(js_code,status){ var geom = new GeometryArray(); if (js_code && geom.importGeoJSON(js_code)) { if (typeof(currentRequest) === "object" && typeof(currentRequest.js_wfs_conf_id) !== "undefined") { for (var i = 0; i < geom.count(); i++) { geom.get(i).wfs_conf = parseInt(currentRequest.js_wfs_conf_id); } } } checkWfsResultsFinished(geom); }); }()); } } } function checkFeatureInfoResults(js_code,status){ numberOfFinishedWmsRequests++; if(isLastResult()){ eventTooltipWmsRequestsFinished.trigger(); } //check if there are results if(js_code == ""){ if(!isFirstResult()) displayResultDoc(""); hideProgressDisplay(); return; } for(var k=0;k < no_result_text.length;k++){ if(js_code.indexOf(no_result_text[k])!==-1){ if(!isFirstResult()) { displayResultDoc(""); hideProgressDisplay(); } return; } } hideProgressDisplay(); //output code displayResultDoc(js_code); } eventTooltipWfsRequestsFinished = new MapbenderEvent(); eventTooltipWfsRequestsFinished.register(function(obj) { var resultGeomArray = obj.geomArray; if(resultGeomArray.count()>0){ //generate and output result if(resultGeomArray.count()>1) var html = createSimpleWfsResultHtml(resultGeomArray); else var html = createDetailedWfsResultHtml(resultGeomArray); displayResultDoc(html); hideProgressDisplay(); } else if(!isFirstResult()) displayResultDoc(""); hideProgressDisplay(); }); function checkWfsResultsFinished(g){ //check if all wfs requests arrived numberOfFinishedWfsRequests++; if (typeof(g) == 'object'){ resultGeomArray.union(g); } if (numberOfFinishedWfsRequests == tooltipWfsRequestCount) { eventTooltipWfsRequestsFinished.trigger({ "geomArray" : resultGeomArray }); } } function isFirstResult(){ return visibleRequest == 0; } function isLastResult(){ return (numberOfFinishedWfsRequests == tooltipWfsRequestCount && numberOfFinishedWmsRequests == tooltipWmsRequestCount); } function displayResultDoc(html){ if(exisitingBalloonId) { $('#' + exisitingBalloonId).hide(); $('#balloon_' + exisitingBalloonId).remove(); } //test if we have a fixed destination and create popup otherwise if(tooltip_destinationFrame=="") { return showBalloonFrame(html); } //put the frame there $("#"+tooltip_destinationFrame).each(function(){ var oDoc = this.contentWindow || this.contentDocument; if (oDoc.document) { oDoc = oDoc.document; } if(isFirstResult()) oDoc.open(); oDoc.write(html); if(isLastResult()) oDoc.close(); }); visibleRequest++; hideProgressDisplay(); } eventTooltipWmsRequestsStarted = new MapbenderEvent(); eventTooltipWmsRequestsStarted.register(function () { // new Mb_notice("STARTED " + tooltipTarget); // $("body", window.frames[tooltipTarget].document).css({"cursor": "pointer"}); }); eventTooltipWmsRequestsStarted.register(fireRequests); eventTooltipWmsRequestsFinished = new MapbenderEvent(); eventTooltipWmsRequestsFinished.register(function () { // new Mb_notice("FINISHED " + tooltipTarget); // $("body", window.frames[tooltipTarget].document).css({"cursor": "default"}); }); function showBalloonFrame(html){ hideProgressDisplay(); if(isFirstResult()){ //calculate Position x=point.x+parseInt(document.getElementById(tooltipTarget).style.left, 10); y=point.y+parseInt(document.getElementById(tooltipTarget).style.top, 10); //hide old Popup if(tooltipWin&&tooltipWin.isVisible()) tooltipWin.destroy(); //create Popup and append document tooltipWin = new mb_popup({html:'