⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jitk_geodesy.js

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JS
📖 第 1 页 / 共 2 页
字号:
var JitkGeodesy = new function(){
	this.azimuthElm;
	this.azimuthTxtElm;
	this.azimuthValue = 0;
	this.segmentDistanceElm;
	this.segmentDistanceValue = 0;
	this.totalDistanceElm;
	this.totalDistanceValue = 0;
	this.distanceElm;
	this.enterStartPointElm;
	this.enterEndPointElm;
	this.azimuthIdElm;
	this.distanceIdElm;
	this.calculatePointElm;
	this.calculateDistanceElm;
	this.endXElm;
	this.endYElm;
	this.currentStateElm;
	this.mapId;
	this.taskId;
	this.currentTool;	
	this.currentAzimuthIndex;
	this.currentDistanceIndex;
	this.measureOption = 'measure';
	this.calculateEndPointOption = 'calculateEndPoint';	
	this.calculateDistanceOption = 'calculateDistance';	
	this.isLoading = false;
	this.selectedCalculatedPointImage;
	this.measureTool;
	
	this.pressCalculatePoint = function(flag){
		if (!this.calculatePointElm && this.taskId){
			this.calculatePointElm = document.getElementById("button_" + this.taskId + "_tool_calculatePoint");
		}
		if (flag){
			if (this.calculatePointElm){
				this.selectedCalculatedPointImage = "WebResource/com/esri/solutions/jitk/web/tasks/images/CalculateBearingandDistanceEndpointD.gif";  
				document.getElementById(this.calculatePointElm.id).src = this.selectedCalculatedPointImage;
				document.getElementById(this.calculatePointElm.id).onmouseout = setCalculatePointImage;
				document.getElementById(this.enterStartPointElm.id).click();
			}
		}else{
			if (this.calculatePointElm){ 
				this.selectedCalculatedPointImage = "WebResource/com/esri/solutions/jitk/web/tasks/images/CalculateBearingandDistanceEndpoint.gif";  
				document.getElementById(this.calculatePointElm.id).src = this.selectedCalculatedPointImage;
				document.getElementById(this.calculatePointElm.id).onmouseout = setCalculatePointImage; 
			}
		}		
	}
	
	setCalculatePointImage = function(){
		document.getElementById(self.calculatePointElm.id).src = self.selectedCalculatedPointImage;
	}
	
	this.pressCalculateDistance = function(flag){
		if (!this.calculateDistanceElm && this.taskId){
			this.calculateDistanceElm = document.getElementById("button_" + this.taskId + "_tool_calculateDistance");
		}
		if (flag){
			if (this.calculateDistanceElm){
				this.selectedCalculatedDistanceImage = "WebResource/com/esri/solutions/jitk/web/tasks/images/CalculateBearingandDistanceD.gif";  
				document.getElementById(this.calculateDistanceElm.id).src = this.selectedCalculatedDistanceImage;
				document.getElementById(this.calculateDistanceElm.id).onmouseout = setCalculateDistanceImage;
				document.getElementById(this.enterStartPointElm.id).click();
			}
		}else{
			if (this.calculateDistanceElm){ 
				this.selectedCalculatedDistanceImage = "WebResource/com/esri/solutions/jitk/web/tasks/images/CalculateBearingandDistance.gif";  
				document.getElementById(this.calculateDistanceElm.id).src = this.selectedCalculatedDistanceImage;
				document.getElementById(this.calculateDistanceElm.id).onmouseout = setCalculateDistanceImage; 
			}
		}		
	}
	
	setCalculateDistanceImage = function(){
		document.getElementById(self.calculateDistanceElm.id).src = self.selectedCalculatedDistanceImage;
	}
	
	this.checkTool = function(tool){
/*	
		if (tool){
			if (tool.id.indexOf("_tool_enterStartPoint") >= 0 || tool.id.indexOf("_tool_enterEndPoint") >= 0) 
				this.currentTool = this.calculateEndPointOption;	
			else
				this.currentTool = this.measureOption;
		}
*/
		if (this.currentStateElm) this.currentTool = document.getElementById(this.currentStateElm.id).value;
		if (!this.currentTool) this.currentTool = this.measureOption;
		this.showMenu(this.currentTool);
	}
	
	this.getElement = function(elmType, elmId){
		var divId = "jitkGeodesy_param" + elmId;
		var elm = document.getElementById(divId);
		if (elm != null) {
	  		var elms = elm.getElementsByTagName(elmType);
	  		for (var i = 0; i < elms.length; i++){
	    		if (elms[i].id && elms[i].id.indexOf(elmId)){
	    			return elms[i];
	    		}
	  		}
  		}
	}

	this.convertAzimuth = function(val, opt){
		switch(document.getElementById(this.azimuthIdElm.id).selectedIndex){
			case 0:
				if (!opt){
    				var deg = parseInt(val);
    				var dval = (val - deg) * 60;
    				var min = Math.abs(parseInt(dval));
    				var mval = (dval - min) * 60;
    				var sec = Math.abs(Math.round(mval));
    				return deg + String.fromCharCode(176) + min + '\'' + sec + '\"';
    			} else return Math.round(val * 100) * 0.01;
			case 1: return Math.round(val * 100) * 0.01;
			case 2: return Math.round(val * 1.74532925) * 0.01;
			case 3: return Math.round((val * 40000)/360) * 0.01;
			case 4: return Math.round((val * 640000)/360) * 0.01; 
		}
		return val;
	}

	this.convertAzimuthToDegree = function(val, idx){
		var cval = val;
		switch(idx){
			case 0: cval = Math.round(val * 100) * 0.01; break;
			case 1: cval = Math.round(val * 100) * 0.01; break;
			case 2: cval = Math.round((val * 100)/ 0.0174532925) * 0.01; break;
			case 3: cval = Math.round((val * 36000)/400) * 0.01; break;
			case 4: cval = Math.round((val * 36000)/6400) * 0.01; break;
		}
		return cval;
	}

	this.convertDistance = function(val){
		var cval = val;
		switch(document.getElementById(this.distanceIdElm.id).selectedIndex){
			case 0: break;
			case 1: cval = Math.round(val * 328.08399) * 0.01; break;
			case 2: cval = Math.round((val * 3937)/12) * 0.01; break;
			case 3: cval = Math.round(val * 0.1) * 0.01; break;
			case 4: cval = Math.round(val * 0.0621371192) * 0.01; break;
			case 5: cval = Math.round(val * 0.0539956803) * 0.01; break;
		}
		// ensure only 2 significant figure
		var sval = String(cval);
		var spos = sval.indexOf(".");
		if (spos >=0 && spos + 3 < sval.length) sval = sval.substring(0, spos + 3);
		return sval;
	}
	
	this.convertDistanceToMeter = function(val, idx){
		var cval = val;
		switch(idx){
			case 0: break;
			case 1: cval = Math.round((val * 100) / 3.2808399) * 0.01; break;
			case 2: cval = Math.round((val * 1200)/39.37) * 0.01; break;
			case 3: cval = val * 1000; break;
			case 4: cval = Math.round((val * 100) / 0.000621371192) * 0.01; break;
			case 5: cval = Math.round((val * 100) / 0.000539956803) * 0.01; break;
		}
		return cval;
	}
	
	this.changeType = function(){
		if (!this.measureTool) return;
		if (!this.measureTool.points) return;
		this.measureTool.contPostAction(this.measureTool.points);
	}
	
	this.changeOption = function(opt){
		if (opt == 'azimuth'){
			document.getElementById(this.azimuthTxtElm.id).value = this.convertAzimuth(this.azimuthValue);
			var azimuthDeg = this.convertAzimuthToDegree(parseFloat(document.getElementById(this.azimuthElm.id).value), this.currentAzimuthIndex);
			document.getElementById(this.azimuthElm.id).value = this.convertAzimuth(azimuthDeg, true);
			this.currentAzimuthIndex = document.getElementById(this.azimuthIdElm.id).selectedIndex;
		}
		if (opt == 'distance'){
			document.getElementById(this.segmentDistanceElm.id).value = this.convertDistance(this.segmentDistanceValue);
			document.getElementById(this.totalDistanceElm.id).value = this.convertDistance(this.totalDistanceValue);
			var distanceMeter = this.convertDistanceToMeter(parseFloat(document.getElementById(this.distanceElm.id).value), this.currentDistanceIndex);
			document.getElementById(this.distanceElm.id).value = this.convertDistance(distanceMeter);
			this.currentDistanceIndex = document.getElementById(this.distanceIdElm.id).selectedIndex;
		}
	}
	
	this.showMenu = function(option){
		jitk_toggleElement("jitkGeodesy_bearingMenu", "block");
		jitk_toggleElement("jitkGeodesy_distanceMenu", "block");
		jitk_toggleElement("jitkGeodesy_coordinateMenu", "none");
		jitk_toggleElement("jitkGeodesy_param_distanceCalculation", "none");
		jitk_toggleElement("jitkGeodesy_param_pointCalculation", "none");
		jitk_toggleElement("jitkGeodesy_param_distanceCalculation", "none");
		/*
		document.getElementById("jitkGeodesy_bearingMenu").style.display = "block";
		document.getElementById("jitkGeodesy_distanceMenu").style.display = "block";
		document.getElementById("jitkGeodesy_coordinateMenu").style.display = "none";
		document.getElementById("jitkGeodesy_param_distanceCalculation").style.display = "none";
		document.getElementById("jitkGeodesy_param_pointCalculation").style.display = "none";
		document.getElementById("jitkGeodesy_param_distanceCalculation").style.display = "none";
		*/
		if (!this.currentStateElm) this.currentStateElm = this.getElement("input", "_currentState");
		if (!this.azimuthElm) this.azimuthElm = this.getElement("input", "_azimuth");
		if (!this.azimuthTxtElm) this.azimuthTxtElm = this.getElement("input", "_txtAzimuth");
		if (!this.segmentDistanceElm) this.segmentDistanceElm = this.getElement("input", "_segmentDistance");
		if (!this.totalDistanceElm) this.totalDistanceElm = this.getElement("input", "_totalDistance");
		if (!this.distanceElm) this.distanceElm = this.getElement("input", "_distance");
		if (!this.enterStartPointElm) this.enterStartPointElm = this.getElement("input", "_enterStartPoint");
		if (!this.enterEndPointElm) this.enterEndPointElm = this.getElement("input", "_enterEndPoint");
		if (!this.azimuthIdElm) this.azimuthIdElm = this.getElement("select", "_azimuthId");
		if (!this.distanceIdElm) this.distanceIdElm = this.getElement("select", "_distanceId");
		
		if (!this.currentAzimuthIndex) {
			try {
				this.currentAzimuthIndex = this.azimuthIdElm.selectedIndex;
			}
			catch (Exception) {
				this.currentAzimuthIndex = 0;
			}
		}
		
		if (!this.currentDistanceIndex) {
			try {
				this.currentDistanceIndex = this.distanceIdElm.selectedIndex;
			}
			catch (Exception) {
				this.currentDistanceIndex = 0;
			}
		}
		
		if (!this.endXElm) this.endXElm = this.getElement("input", "_endX");
		if (!this.endYElm) this.endYElm = this.getElement("input", "_endY");
		
		this.pressCalculatePoint(false);
		this.pressCalculateDistance(false);
		if (option == this.calculateDistanceOption){
			document.getElementById("jitkGeodesy_coordinateMenu").style.display = "block";
			document.getElementById("jitkGeodesy_param_segmentDistance").style.display = "none";
			document.getElementById("jitkGeodesy_param_totalDistance").style.display = "none";
			document.getElementById("jitkGeodesy_param_distance").style.display = "block";
			document.getElementById("jitkGeodesy_param_distanceCalculation").style.display = "block";
			document.getElementById("jitkGeodesy_param_txtAzimuth").style.display = "none";
			document.getElementById("jitkGeodesy_param_azimuth").style.display = "block";
			document.getElementById("jitkGeodesy_param_enterEndPoint").style.display = "block";
			if (this.currentStateElm) document.getElementById(this.currentStateElm.id).value = this.calculateDistanceOption;
			if (this.endXElm) document.getElementById(this.endXElm.id).disabled = false;			
			if (this.endYElm) document.getElementById(this.endYElm.id).disabled = false;			
			if (this.azimuthElm) document.getElementById(this.azimuthElm.id).disabled = true;
			if (this.distanceElm) document.getElementById(this.distanceElm.id).disabled = true;
			this.pressCalculateDistance(true);
			return;
		}
		if (option == this.calculateEndPointOption){
			document.getElementById("jitkGeodesy_coordinateMenu").style.display = "block";
			document.getElementById("jitkGeodesy_param_segmentDistance").style.display = "none";
			document.getElementById("jitkGeodesy_param_totalDistance").style.display = "none";
			document.getElementById("jitkGeodesy_param_distance").style.display = "block";
			document.getElementById("jitkGeodesy_param_pointCalculation").style.display = "block";
			document.getElementById("jitkGeodesy_param_txtAzimuth").style.display = "none";
			document.getElementById("jitkGeodesy_param_azimuth").style.display = "block";
			document.getElementById("jitkGeodesy_param_enterEndPoint").style.display = "none";
			if (this.currentStateElm) document.getElementById(this.currentStateElm.id).value = this.calculateEndPointOption;
			if (this.endXElm){
				document.getElementById(this.endXElm.id).disabled = true;
			}			
			if (this.endYElm){
				document.getElementById(this.endYElm.id).disabled = true;
			}			
			if (this.azimuthElm) document.getElementById(this.azimuthElm.id).disabled = false;
			if (this.distanceElm) document.getElementById(this.distanceElm.id).disabled = false;
			this.pressCalculatePoint(true);
			return;
		}
//		if (option == this.measureOption){
//		}
		// default option menu
		document.getElementById("jitkGeodesy_param_segmentDistance").style.display = "block";
		document.getElementById("jitkGeodesy_param_totalDistance").style.display = "block";
		document.getElementById("jitkGeodesy_param_distance").style.display = "none";
		document.getElementById("jitkGeodesy_param_txtAzimuth").style.display = "block";
		document.getElementById("jitkGeodesy_param_azimuth").style.display = "none";
		if (this.currentStateElm) document.getElementById(this.currentStateElm.id).value = this.measureOption;
		this.resetValue();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -