svn commit: r796 - trunk/mapbender/http/javascripts/mod_measure4326.php

vera_schulze at osgeo.org vera_schulze at osgeo.org
Wed Oct 18 07:17:59 EDT 2006


Author: vera_schulze
Date: 2006-10-18 11:17:59+0000
New Revision: 796

Added:
   trunk/mapbender/http/javascripts/mod_measure4326.php

Log:
new measure Module to measure with EPSG 4326

Added: trunk/mapbender/http/javascripts/mod_measure4326.php
Url: https://mapbender.osgeo.org/source/browse/mapbender/trunk/mapbender/http/javascripts/mod_measure4326.php?view=auto&rev=796
==============================================================================
--- (empty file)
+++ trunk/mapbender/http/javascripts/mod_measure4326.php	2006-10-18 11:17:59+0000
@@ -0,0 +1,251 @@
+<?php
+# $Id: mod_measure.php 267 2006-05-12 12:16:01Z vera_schulze $
+# http://www.mapbender.org/index.php/mod_measure.php
+# Copyright (C) 2002 CCGIS 
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+require_once("../../conf/mapbender.conf");
+
+$gui_id = $_REQUEST["gui_id"];
+$con = db_connect($DBSERVER,$OWNER,$PW);
+db_select_db(DB,$con);
+$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'measure' AND fkey_gui_id = $1";
+$v = array($gui_id);
+$t = array('s');
+$res = db_prep_query($sql, $v, $t);
+$cnt = 0;
+while($row = db_fetch_array($res)){ 
+	$e_src = $row["e_src"];
+	$e_target = $row["e_target"];
+	$cnt++;
+}
+if($cnt > 1){
+	echo "alert('measure: ID not unique!');";
+}
+echo "var mod_measure_target = '".$e_target."';";
+
+require_once("ajax_jquery.js");
+$e_id_css = "measure";
+include '../include/dyn_js.php';
+?>
+
+var mod_measure_color1 = "white";
+var mod_measure_color2 = "black";
+var mod_measure_font = "Arial, Helvetica, sans-serif";
+var mod_measure_fontsize = "9px";
+var mod_measure_basepoint = "#8a2be2";
+var mod_measure_linepoint = "#ff00ff";
+var mod_measure_bg = "";
+var mod_measure_pgsql = true;
+
+var mod_measure_win = null;
+
+var mod_measure_elName = "measure";
+var mod_measure_frameName = "";
+var mod_measure_epsg;
+var mod_measure_width;
+var mod_measure_height;
+var dist = false;
+var mod_measure_RX = new Array();
+var mod_measure_RY = new Array();
+var mod_measure_Dist = new Array();
+var mod_measure_TotalDist = new Array();
+var mod_measureSubFunctions = new Array();
+
+var mod_measure_img_on = new Image(); mod_measure_img_on.src = "<?php  echo preg_replace("/_off/","_on",$e_src);  ?>";
+var mod_measure_img_off = new Image(); mod_measure_img_off.src = "<?php  echo $e_src;  ?>";
+var mod_measure_img_over = new Image(); mod_measure_img_over.src = "<?php  echo preg_replace("/_off/","_over",$e_src);  ?>";
+
+function init_mod_measure(ind){
+	mb_button[ind] = document.getElementById(mod_measure_elName);
+	mb_button[ind].img_over = mod_measure_img_over.src;
+	mb_button[ind].img_on = mod_measure_img_on.src;
+	mb_button[ind].img_off = mod_measure_img_off.src;
+	mb_button[ind].status = 0;
+	mb_button[ind].elName = mod_measure_elName;
+	mb_button[ind].fName = mod_measure_frameName;
+	mb_button[ind].go = new Function ("mod_measure_go()");
+	mb_button[ind].stop = new Function ("mod_measure_disable()");
+	var ind = getMapObjIndexByName(mod_measure_target);
+	mod_measure_width = mb_mapObj[ind].width;
+	mod_measure_height = mb_mapObj[ind].height;
+	mod_measure_epsg = mb_mapObj[ind].epsg;
+	mb_registerSubFunctions("drawDashedLine()");
+	mb_registerPanSubElement("measuring");
+}
+function register_measureSubFunctions(stringFunction){
+	mod_measureSubFunctions[mod_measureSubFunctions.length] = stringFunction;
+}
+function mod_measure_go(){
+	var el = window.frames[mod_measure_target].document;
+	el.onmousedown = mod_measure_start;
+	//el.onmousemove = mod_measure_run;
+	var measureSub = "";
+	for(var i=0; i<mod_measureSubFunctions.length; i++){
+		measureSub += eval(mod_measureSubFunctions[i]);
+	}   
+	writeTag(mod_measure_target,"measure_sub",measureSub);
+}
+function mod_measure_disable(){
+	var el = window.frames[mod_measure_target].document; 
+	el.onmousedown = null;
+	el.onmousemove = null;
+	writeTag(mod_measure_target,"measure_display","");
+	writeTag(mod_measure_target,"measure_sub","");
+}
+function mod_measure_timeout(){
+	var el = window.frames[mod_measure_target].document; 
+	el.onmousedown = null;
+	el.ondblclick = null;
+	el.onmousemove = null;
+}
+function mod_measure_disableTimeout(){
+	var el = window.frames[mod_measure_target].document;
+	el.onmousedown = mod_measure_start;
+	//el.onmousemove = mod_measure_run;
+}
+function use_dist() {
+    if(dist != false){
+        mod_measure_Dist[mod_measure_Dist.length] = dist;
+		var totalDist = mod_measure_TotalDist[mod_measure_TotalDist.length-1] + dist;
+       	mod_measure_TotalDist[mod_measure_TotalDist.length] = Math.round(totalDist * 100)/100;
+        
+      } 
+      drawDashedLine(); 
+      dist = false;
+}
+function mod_measure_start(e){
+	mb_getMousePos(e,mod_measure_target);
+	var realWorldPos = my_makeClickPos2RealWorldPos(mod_measure_target,clickX,clickY);
+    
+	mod_measure_RX[mod_measure_RX.length] = realWorldPos[0];
+	mod_measure_RY[mod_measure_RY.length] = realWorldPos[1];
+       
+     if(mod_measure_RX.length > 1){
+	 
+     convert_coords(mod_measure_RX[mod_measure_RX.length-2],mod_measure_RY[mod_measure_RY.length-2],mod_measure_RX[mod_measure_RX.length-1],mod_measure_RY[mod_measure_RY.length-1],inputEPSG);         
+	}
+	else{
+		mod_measure_Dist[mod_measure_Dist.length] = 0;
+		mod_measure_TotalDist[mod_measure_TotalDist.length] = 0;
+        drawDashedLine();
+	}
+}
+function drawDashedLine(){
+	var str_mPoints = "<div style='position:absolute;left:0px;top:0px' ><img src='"+mb_trans.src+"' width='"+mod_measure_width+"' height='0'></div>";
+	str_mPoints += "<div style='position:absolute;left:0px;top:0px' ><img src='"+mb_trans.src+"' width='0' height='"+mod_measure_height+"'></div>";
+	for(var i=0; i<mod_measure_RX.length; i++){
+		var pos = makeRealWorld2mapPos(mod_measure_target,mod_measure_RX[i],mod_measure_RY[i]);
+		str_mPoints += "<div style='font-size:1px;position:absolute;top:"+(pos[1]-2)+"px;left:"+(pos[0]-2)+"px;width:4px;height:4px;background-color:"+mod_measure_basepoint+"'></div>";
+		if(i>0){
+			str_mPoints += "<div  style='font-family:"+mod_measure_font+";font-size:"+mod_measure_fontsize+";color:"+mod_measure_color1+";";
+			if(mod_measure_bg != ""){
+				str_mPoints += "background-color:"+mod_measure_bg+";";
+			}
+			str_mPoints += "position:absolute;top:"+(pos[1] + 3)+"px;left:"+(pos[0]+3)+"px;z-index:20'>"+mod_measure_TotalDist[i]+"</div>";
+			str_mPoints += "<div  style='font-family:"+mod_measure_font+";font-size:"+mod_measure_fontsize+";color:"+mod_measure_color2+";position:absolute;top:"+(pos[1] + 4)+"px;left:"+(pos[0]+4)+"px;z-index:21'>"+mod_measure_TotalDist[i]+"</div>";
+		}
+	}
+	if(mod_measure_RX.length>1){
+		for(var k=1; k<mod_measure_RX.length; k++){
+			var pos0 = makeRealWorld2mapPos(mod_measure_target,mod_measure_RX[k], mod_measure_RY[k]);
+			var pos1 = makeRealWorld2mapPos(mod_measure_target,mod_measure_RX[k-1], mod_measure_RY[k-1]);
+          
+			str_mPoints += evaluateDashes(pos1[0],pos1[1],pos0[0],pos0[1],k);
+		}
+	}
+	writeTag(mod_measure_target,"measuring",str_mPoints);
+}
+function evaluateDashes(x1,y1,x2,y2,count){
+	var str_dashedLine = "";
+	var s = 10;
+	var d = Math.sqrt(Math.pow((y1-y2),2) + Math.pow((x1-x2),2)) ;
+	var n = Math.round(d/s);
+	var s_x =  (x2 - x1)/n;
+	var s_y =  (y2 - y1)/n;
+	for(var i=1; i<n; i++){
+		var x = Math.round(x1 + i * s_x)-2;
+		var y = Math.round(y1 + i * s_y)-2;
+		if(x >= 0 && x <= mod_measure_width && y >= 0 && y <= mod_measure_height){
+			str_dashedLine += "<div style='font-size:1px;position:absolute;top:"+y+"px;left:"+x+"px;width:4px;height:4px;background-color:"+mod_measure_linepoint+"'></div>";
+		}
+	}
+	str_dashedLine += "<div style='font-family:"+mod_measure_font+";font-size:"+mod_measure_fontsize+";color:"+mod_measure_color1+";";
+	if(mod_measure_bg != ""){
+		str_dashedLine += "background-color:"+mod_measure_bg+";";
+	}   
+	str_dashedLine += "position:absolute;top:"+(Math.round(y1 + (y2-y1)/2 +3))+"px;left:"+(Math.round(x1 + (x2-x1)/2 +3))+"px'>"+mod_measure_Dist[count]+"</div>";
+	str_dashedLine += "<div style='font-family:"+mod_measure_font+";font-size:"+mod_measure_fontsize+";color:"+mod_measure_color2+";position:absolute;top:"+(Math.round(y1 + (y2-y1)/2 + 4))+"px;left:"+(Math.round(x1 + (x2-x1)/2+4))+"px'>"+mod_measure_Dist[count]+"</div>";
+	return str_dashedLine;
+}
+function mod_measure_close(){
+	if(mod_measure_RX.length < 3 || (mod_measure_RX[mod_measure_RX.length-1] == mod_measure_RX[0] && mod_measure_RY[mod_measure_RY.length-1] == mod_measure_RY[0])){return;}
+	mod_measure_RX[mod_measure_RX.length] = mod_measure_RX[0];
+	mod_measure_RY[mod_measure_RY.length] = mod_measure_RY[0];
+	if(mod_measure_RX.length > 1){
+		// circumference
+        convert_coords(mod_measure_RX[mod_measure_RX.length-2],mod_measure_RY[mod_measure_RY.length-2],mod_measure_RX[mod_measure_RX.length-1],mod_measure_RY[mod_measure_RY.length-1],inputEPSG);   
+	}
+	else{
+		mod_measure_Dist[mod_measure_Dist.length] = 0;
+		mod_measure_TotalDist[mod_measure_TotalDist.length] = 0;
+        drawDashedLine();
+	}
+}
+function mod_measure_delete(){
+	mod_measure_RX = new Array();
+	mod_measure_RY = new Array();
+    mod_measure_Dist = new Array();
+	mod_measure_TotalDist = new Array();
+    dist = false;
+    writeTag(mod_measure_target,"measuring","");
+	writeTag(mod_measure_target,"measure_display","");
+}
+function my_makeClickPos2RealWorldPos(frameName, myClickX, myClickY) {
+	var ind = getMapObjIndexByName(frameName);
+	var width = parseInt(mb_mapObj[ind].width);
+	var height = parseInt(mb_mapObj[ind].height);
+	var arrayBBox = mb_mapObj[ind].extent.split(",");
+	var minX = parseFloat(arrayBBox[0]);
+	var minY = parseFloat(arrayBBox[1]);
+	var maxX = parseFloat(arrayBBox[2]);
+	var maxY = parseFloat(arrayBBox[3]);
+	var xtentx = maxX - minX;
+	var xtenty =  maxY - minY;
+	var posX = parseFloat(minX + (myClickX / width) * xtentx);
+	var posY = parseFloat(maxY - (myClickY / height) * xtenty);
+	return new Array(posX, posY);
+}
+function convert_coords(x1,y1,x2,y2,inputEPSG){
+
+      $.post(
+    	// zielurl
+        '../javascripts/transform_coordinatesWGS84.php',
+        // parameter fuer diese datei
+        {
+        	'x1'      : x1,
+            'y1'      : y1,
+			'x2'      : x2,
+			'y2'      : y2,  
+            'inputEPSG' :  inputEPSG      
+        },
+        // callback function
+        function(xml){
+            dist = Math.round(parseFloat(xml));   
+            use_dist();   
+        }
+     );
+}
\ No newline at end of file




More information about the Mapbender_commits mailing list