svn commit: r108 - trunk/mapbender/http/javascripts/mod_perimeter.php
uli at osgeo.org
uli at osgeo.org
Wed Apr 19 11:38:35 EDT 2006
Author: uli
Date: 2006-04-19 15:38:34+0000
New Revision: 108
Added:
trunk/mapbender/http/javascripts/mod_perimeter.php (contents, props changed)
Log:
first check in
module to draw a perimeter
Added: trunk/mapbender/http/javascripts/mod_perimeter.php
Url: https://mapbender.osgeo.org/source/browse/mapbender/trunk/mapbender/http/javascripts/mod_perimeter.php?view=auto&rev=108
==============================================================================
--- (empty file)
+++ trunk/mapbender/http/javascripts/mod_perimeter.php 2006-04-19 15:38:34+0000
@@ -0,0 +1,156 @@
+<?php
+# $Id$
+# http://www.mapbender.org/index.php/Perimeter
+# 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 = 'perimeter' 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('perimeter: ID not unique!');";}
+$e_id_css = 'perimeter';
+include('../include/dyn_js.php');
+?>
+
+var mod_perimeter_target = "<?php echo $e_target; ?>";
+mb_registerInitFunctions("mod_perimeter_prepare()");
+mb_registerSubFunctions("mod_perimeter_draw()");
+mb_registerPanSubElement("perimeter");
+var mod_perimeter_img_on = new Image(); mod_perimeter_img_on.src = "<?php echo preg_replace("/_off/","_on",$e_src); ?>";
+var mod_perimeter_img_off = new Image(); mod_perimeter_img_off.src ="<?php echo $e_src; ?>";
+var mod_perimeter_img_over = new Image(); mod_perimeter_img_over.src = "<?php echo preg_replace("/_off/","_over",$e_src); ?>";
+var mod_perimeter_prevEvent = null;
+var mod_perimeter_x = null;
+var mod_perimeter_y = null;
+var mod_perimeter_r = null;
+var mod_perimeter_canvas = null;
+var mod_perimeter_status = 0;
+var mod_perimeter_img_obj = null;
+
+function mod_perimeter_checkDefaults(){
+ try{var t = mod_perimeter_thickness;}catch(e){mod_perimeter_thickness = 2;}
+ try{var t = mod_perimeter_color;}catch(e){mod_perimeter_color = '#000000';}
+ try{var t = mod_perimeter_text;}catch(e){mod_perimeter_text = 'Please insert a radius: ';}
+ try{var t = mod_perimeter_error;}catch(e){mod_perimeter_error = 'Invalid Input.';}
+}
+function mod_perimeter_click(o){
+ mod_perimeter_img_obj = o;
+ mod_perimeter_status = (mod_perimeter_status == 0) ? 1 : 0;
+ o.src = (mod_perimeter_status == 0) ? mod_perimeter_img_off.src : mod_perimeter_img_on.src;
+ if(mod_perimeter_status == 1){
+ mod_perimeter_saveEvents();
+ }
+ else{
+ mod_perimeter_disable();
+ }
+}
+function mod_perimeter_saveEvents(){
+ var myE = window.frames[mod_perimeter_target].document;
+ mod_perimeter_mouseclick = myE.onclick;
+ mod_perimeter_mouseover = myE.onmouseover;
+ mod_perimeter_mousedown = myE.onmousedown;
+ mod_perimeter_mouseup = myE.onmouseup;
+ mod_perimeter_mousemove = myE.onmousemove;
+ myE.onclick = mod_perimeter_event;
+ myE.onmouseover = null;
+ myE.onmousedown = null;
+ myE.onmouseup = null;
+ myE.onmousemove = null;
+}
+function mod_perimeter_restoreEvents(){
+ var myE = window.frames[mod_perimeter_target].document;
+ myE.onclick = mod_perimeter_mouseclick;
+ myE.onmouseover = mod_perimeter_mouseover;
+ myE.onmousedown = mod_perimeter_mousedown;
+ myE.onmouseup = mod_perimeter_mouseup;
+ myE.onmousemove = mod_perimeter_mousemove;
+}
+function mod_perimeter_over(o){
+ o.src = mod_perimeter_img_over.src;
+}
+function mod_perimeter_out(o){
+ o.src = (mod_perimeter_status == 0) ? mod_perimeter_img_off.src : mod_perimeter_img_on.src;
+}
+function mod_perimeter_disable(){
+ window.frames[mod_perimeter_target].document.getElementById("perimeter").innerHTML = '';
+}
+function mod_perimeter_event(e){
+ if(ie){
+ clickX = window.frames[mod_perimeter_target].event.clientX;
+ clickY = window.frames[mod_perimeter_target].event.clientY;
+ }
+ else{
+ clickX = e.pageX;
+ clickY = e.pageY;
+ }
+ var pos = makeClickPos2RealWorldPos(mod_perimeter_target, clickX, clickY)
+ mod_perimeter_x = pos[0];
+ mod_perimeter_y = pos[1];
+ var units = prompt(mod_perimeter_text);
+ var myUnits = mod_perimeter_validate(units);
+ if(myUnits != false){
+ mod_perimeter_r = myUnits;
+ mod_perimeter_draw();
+ }
+ else{
+ mod_perimeter_click(mod_perimeter_img_obj);
+ }
+ mod_perimeter_restoreEvents();
+}
+function mod_perimeter_validate(u){
+ if(isNaN(u) == true){
+ alert(mod_perimeter_error);
+ return false;
+ }
+ else{
+ return parseInt(u);
+ }
+}
+function mod_perimeter_prepare(){
+ cw_opacity=1;
+ mod_perimeter_checkDefaults();
+ var attributes = new Array();
+ attributes[0] = new Array();
+ attributes[0][0] = "style";
+ attributes[0][1] = "position:absolute; top:0px; left:0px; z-index:100; font-size:10px;";
+ var node = mb_checkTag(mod_perimeter_target, "div", "perimeter", "body", attributes);
+ mod_perimeter_canvas = new jsGraphics("perimeter", window.frames[mod_perimeter_target]);
+ mod_perimeter_canvas.setStroke(mod_perimeter_thickness);
+ mod_perimeter_canvas.setColor(mod_perimeter_color);
+}
+function mod_perimeter_draw(){
+ if(mod_perimeter_status == 1){
+ mod_perimeter_disable();
+ var posCenter = makeRealWorld2mapPos(mod_perimeter_target,mod_perimeter_x, mod_perimeter_y);
+ var posRadius = makeRealWorld2mapPos(mod_perimeter_target,(mod_perimeter_x + mod_perimeter_r), mod_perimeter_y);
+ var pxRadius = posRadius[0] - posCenter[0];
+ mod_perimeter_canvas.drawEllipse((posCenter[0]-pxRadius), (posCenter[1]-pxRadius), pxRadius*2, pxRadius*2);
+ mod_perimeter_canvas.paint();
+ }
+}
\ No newline at end of file
More information about the Mapbender_commits
mailing list