[Mapbender-commits] r1335 - trunk/mapbender/http/javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Tue May 22 09:44:57 EDT 2007


Author: uli
Date: 2007-05-22 09:44:57 -0400 (Tue, 22 May 2007)
New Revision: 1335

Added:
   trunk/mapbender/http/javascripts/mod_dynamicOverview.php
Log:
first check in

Added: trunk/mapbender/http/javascripts/mod_dynamicOverview.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_dynamicOverview.php	                        (rev 0)
+++ trunk/mapbender/http/javascripts/mod_dynamicOverview.php	2007-05-22 13:44:57 UTC (rev 1335)
@@ -0,0 +1,193 @@
+<?php
+# $Id$
+# http://www.mapbender.org/index.php/Owsproxy
+# Module maintainer Uli
+# 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(dirname(__FILE__)."/../../conf/mapbender.conf");
+$e_id_css = 'dynamicOverview';
+$gui_id = $_REQUEST["gui_id"];
+include '../include/dyn_js.php';
+
+$con = db_connect($DBSERVER,$OWNER,$PW);
+db_select_db(DB,$con);
+$sql = "SELECT e_src, e_target FROM gui_element WHERE e_id = 'dynamicOverview' 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_target = $row["e_target"];
+	$cnt++;
+}
+if($cnt > 1){ echo "alert('dynamicOverview: ID not unique!');";}
+echo "var mod_dynamicOverview_target = '".$e_target."';";
+
+?>
+/*
+* element_var: mod_dynamicOverview_zoomFactor (proportion between main- and overview-map)
+* element_var: mod_dynamicOverview_startExtent (startextent of the main mapframe, minx,miny,maxx,maxy commaseparated)
+* element_var: mod_dynamicOverview_wmsIndex (wms by index to calculate the maxExtent)
+* element_var: mod_dynamicOverview_useMaxExtent (consider the maxExtent for the wms in the given srs)
+*/
+try{
+	if (mod_dynamicOverview_startExtent){}
+}
+catch(e){
+	mod_dynamicOverview_startExtent = false;
+}
+try{
+	if (mod_dynamicOverview_wmsIndex){ mod_dynamicOverview_wmsIndex = parseInt(mod_dynamicOverview_wmsIndex);}
+}
+catch(e){
+	mod_dynamicOverview_wmsIndex = 0;
+}
+try{
+	if (mod_dynamicOverview_useMaxExtent){}
+}
+catch(e){
+	mod_dynamicOverview_useMaxExtent = false;
+}
+
+var mod_dynamicOverviewCount = 0;
+var mod_dynamicOverviewSwitch = false;
+
+mb_registerPreFunctions("mod_dynamicOverviewCalculateExtent(frameName)");
+mb_registerSubFunctions("mod_dynamicOverviewSetVisibility(frameName)");
+
+function mod_dynamicOverviewCalculateExtent(frameName){
+	var arrayTargets = mod_dynamicOverview_target.split(",");
+	var disty = false;
+	var distx = false;
+	//set extent for the main mapframe from configuration param element_var
+	if(mod_dynamicOverview_startExtent && mod_dynamicOverviewCount == 0){
+		mod_dynamicOverviewCount++;
+		var arrayCoords = mod_dynamicOverview_startExtent.split(",");
+		var minx = parseFloat(arrayCoords[0]);
+		var miny = parseFloat(arrayCoords[1]);
+		var maxx = parseFloat(arrayCoords[2]);
+		var maxy = parseFloat(arrayCoords[3]);
+		mb_calculateExtent(arrayTargets[0],minx,miny,maxx,maxy);
+	}
+	// read params from main-mapframe
+	if(frameName == arrayTargets[0]){
+		var ind = getMapObjIndexByName(frameName);
+		
+		// get center in coords:
+		var coords = mb_mapObj[ind].extent.split(",");
+		var minx = parseFloat(coords[0]);
+		var miny = parseFloat(coords[1]);
+		var maxx = parseFloat(coords[2]);
+		var maxy = parseFloat(coords[3]);
+		distx = maxx - minx;
+		disty   = maxy - miny;
+		var centerx = minx + distx/2;
+		var centery = miny + disty/2;
+		
+		if(mod_dynamicOverview_zoomFactor){
+			mod_dynamicOverview_zoomFactor = parseFloat(mod_dynamicOverview_zoomFactor);
+			minx = centerx - ((distx/2)*mod_dynamicOverview_zoomFactor);
+			miny = centery - ((disty/2)*mod_dynamicOverview_zoomFactor);
+			maxx = centerx + ((distx/2)*mod_dynamicOverview_zoomFactor);
+			maxy = centery + ((disty/2)*mod_dynamicOverview_zoomFactor);
+			distx = maxx - minx;
+		    disty   = maxy - miny; 
+		}
+		
+		// check and set maxExtent for orverview 
+		if(mod_dynamicOverview_useMaxExtent){
+			if(mod_dynamicOverview_useMaxExtent){
+				var maxExtent = mod_dynamicOverview_useMaxExtent;
+			}
+			else{
+				var maxExtent = mod_dynamicOverviewGetMaxExtent(wms[mod_dynamicOverview_wmsIndex], wms[0].gui_wms_epsg);
+			}
+			if(maxExtent){
+				maxExtent = maxExtent.split(",");
+				var maxMinx = parseFloat(maxExtent[0]);
+				var maxMiny = parseFloat(maxExtent[1]);
+				var maxMaxx = parseFloat(maxExtent[2]);
+				var maxMaxy = parseFloat(maxExtent[3]);
+				var maxDistx = maxMaxx - maxMinx;
+				var maxDisty = maxMaxy - maxMiny;	
+				
+				if(distx && disty && (distx > maxDistx || disty > maxDisty)){
+					minx = maxMinx;
+					miny = maxMiny;
+					maxx = maxMaxx;
+					maxy = maxMaxy;
+				}
+			}	
+		}
+		//check and set minExtent for overview
+		var newMinExt = mod_dynamicOverviewCheckDiagonal(arrayTargets[1], minx,miny, maxx, maxy);
+		if(newMinExt){
+//			console.log("newMin: "+newMinExt);
+			var minCoords = newMinExt.split(",");
+			minx = 	parseFloat(minCoords[0]);	
+			miny = 	parseFloat(minCoords[1]);
+			maxx = 	parseFloat(minCoords[2]);
+			maxy = 	parseFloat(minCoords[3]);
+		}
+		mb_calculateExtent(arrayTargets[1],minx,miny,maxx,maxy)
+		zoom(arrayTargets[1],true, 1.0);
+	}
+	else if(frameName == arrayTargets[1]){
+		//switch hidden wms to visible
+		if(wms[mod_dynamicOverview_wmsIndex].gui_wms_visible != 1){
+			mod_dynamicOverviewSwitch = wms[mod_dynamicOverview_wmsIndex].gui_wms_visible;
+			wms[mod_dynamicOverview_wmsIndex].gui_wms_visible = 1;
+		}
+	}
+}
+function mod_dynamicOverviewCheckDiagonal(frameName, minx,miny, maxx, maxy){
+	var r = false;
+	var ind = getMapObjIndexByName(frameName);
+	var distx = maxx-minx;
+	var disty = maxy-miny;
+	var centerx = minx + distx/2;
+	var centery = miny + distx/2;
+	var xPerPix = distx/mb_mapObj[ind].width;
+	var yPerPix = disty/mb_mapObj[ind].height;
+	var d = Math.sqrt(Math.pow(xPerPix,2)+Math.pow(yPerPix,2));
+	if(mod_dynamicOverview_minScale && mod_dynamicOverview_minScale > d){
+		var newDistx = Math.sqrt(Math.pow((mod_dynamicOverview_minScale),2)/2)*mb_mapObj[ind].width;
+//		console.log(newDistx);
+		minx = centerx - newDistx/2;
+		maxx = centerx + newDistx/2;
+		miny = centery - newDistx/2;
+		maxy = centery + newDistx/2;
+		r = minx + ","+ miny + "," + maxx + "," + maxy;
+	}
+	return r;
+}
+function mod_dynamicOverviewSetVisibility(frameName){
+	var arrayTargets = mod_dynamicOverview_target.split(",");
+	if(mod_dynamicOverviewSwitch && frameName == arrayTargets[1]){
+		wms[mod_dynamicOverview_wmsIndex].gui_wms_visible = mod_dynamicOverviewSwitch;
+		
+	}	
+}
+function mod_dynamicOverviewGetMaxExtent(wms, srs){
+	var re = false;
+	for(var i=0; i<wms.gui_epsg.length; i++){
+		if(srs == wms.gui_epsg[i]){
+			var re = wms.gui_minx[i] +","+ wms.gui_miny[i]  +","+ wms.gui_maxx[i] +","+ wms.gui_maxy[i];
+//			window.console.log(re);	
+		}
+	}
+	return re;
+}


Property changes on: trunk/mapbender/http/javascripts/mod_dynamicOverview.php
___________________________________________________________________
Name: svn:keywords
   + HeadURL Id LastChangedBy LastChangedDate LastChangedRevision



More information about the Mapbender_commits mailing list