📄 jitk_geodesy.js
字号:
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 + -