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

📄 jitk_geodesy.js

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JS
📖 第 1 页 / 共 2 页
字号:
	}
	
	this.parseValue = function(xml, tag){
	    var pos = xml.indexOf(tag);
    	var vpos = xml.indexOf("value", pos);
    	if (vpos > 0){
        	spos = xml.indexOf("\"", vpos);
        	epos = xml.indexOf("\"", spos + 1);
        	return xml.substring(spos+1, epos)
    	}
	}
	
    this.isNumeric = function(strString, chkNegative){
        var strValidChars = "0123456789.";
        if (chkNegative) strValidChars = "-0123456789.";
        var strChar;
        var blnResult = true;

        if (strString.length == 0) return false;
        for (i = strString.length; i >= 0; i--){
            strChar = strString.charAt(i);
            if (strValidChars.indexOf(strChar) == -1) blnResult = false;
        }        
        return blnResult;
    }

    this.checkValue = function(obj){
    	var divid = "jitkGeodesy_param_";
    	var chkNegative = false;
    	if (obj.id.indexOf("start") > 0){
    		divid += "msgErrCoord";
    		chkNegative = true;
    	}
    	if (obj.id.indexOf("end") > 0){
    		divid += "msgErrCoord1";
    		chkNegative = true;
    	}
    	if (obj.id.indexOf("azimuth") > 0) divid += "msgErrAzimuth";
    	if (obj.id.indexOf("distance") > 0) divid += "msgErrDistance";
        var error = false;
        if (obj.value == '') return;
        if (!this.isNumeric(obj.value, chkNegative)){
            obj.value = 0.0;
            error = true;
        }
        if (obj.id.indexOf("azimuth") > 0){
        	if (parseFloat(obj.value) < 0 || parseFloat(obj.value) > 360) error = true; 
        }
        if (error){
          document.getElementById(divid).style.display = "block";
        }else{
          document.getElementById(divid).style.display = "none";
        }
    }
	
  	this.processPostBack = function(xh) { if (xh != null && xh.readyState == 4 && xh.status == 200) JitkGeodesy.processPostBackXML(EsriUtils.getXmlDocument(xh), xh.responseText); }

	this.resetValue = function(){
    	this.azimuthValue = 0.0;
		document.getElementById(this.azimuthTxtElm.id).value = this.convertAzimuth(this.azimuthValue);
		this.segmentDistanceValue = 0.0;
		document.getElementById(this.segmentDistanceElm.id).value = this.convertDistance(this.segmentDistanceValue);
		this.totalDistanceValue = 0.0;
		document.getElementById(this.totalDistanceElm.id).value = this.convertDistance(this.totalDistanceValue);
	}

  	this.processPostBackXML = function(xml, xmltext) {
    	var error = EsriUtils.getErrorFromDocument(xml);
    	if (error) {
      		if (EsriUtils.debug) alert(error);
      		return;
    	}
    	this.azimuthValue = parseFloat(this.parseValue(xmltext, "_param_txtAzimuth"))
//		this.azimuthElm.value = this.convertAzimuth(this.azimuthValue);
		document.getElementById(this.azimuthTxtElm.id).value = this.convertAzimuth(this.azimuthValue);
		this.segmentDistanceValue = parseFloat(this.parseValue(xmltext, "_param_segmentDistance"));
		document.getElementById(this.segmentDistanceElm.id).value = this.convertDistance(this.segmentDistanceValue);
		this.totalDistanceValue = parseFloat(this.parseValue(xmltext, "_param_totalDistance"));
		document.getElementById(this.totalDistanceElm.id).value = this.convertDistance(this.totalDistanceValue);
		JitkHideLoadingIndicator(this.taskId);
  }
/*	
	function doblur(){
        self.azimuthElm.blur();
	}
*/	
	var self = this; 
}

function JitkDrawPolyShapeAction(obj) {
  var isPolygon = obj.isPolygon;
  this.inheritsFrom(new EsriAction());
  this.name = (isPolygon) ? "EsriDrawPolygonAction" : "EsriDrawPolylineAction";
  var isPgon = isPolygon;
  var element, callback, contCallback, bounds, pts, index, gr, tGr;
  var self = this;

  this.activate = function(elem, cF, ccF) {
    element = elem;
    callback = cF;
    contCallback = ccF;

    gr = EsriUtils.createGraphicsElement(element.id + "gr", element);
    EsriUtils.setElementStyle(gr.gc, "z-index:" + this.graphicsZIndex + ";");
    gr.lineColor = this.symbol.lineColor;
    gr.lineWidth = this.symbol.lineWidth;
    gr.lineOpacity = this.symbol.lineOpacity;

    tGr = EsriUtils.createGraphicsElement(element.id + "tGr", element);
    EsriUtils.setElementStyle(tGr.gc, "z-index:" + this.graphicsZIndex + ";");
    tGr.lineColor = this.symbol.lineColor;
    tGr.lineWidth = this.symbol.lineWidth;
    tGr.lineOpacity = this.symbol.lineOpacity;
    element.style.cursor = tGr.gc.style.cursor = this.cursor;
    element.onmousedown = tGr.gc.onmousedown = processMouseDown;
  }

  this.deactivate = function() {
    this.isActive = false;
    if (element != null) {
      element.onmousedown = null;
      element.style.cursor = "default";
    }
    if (gr != null) {
      gr.gc.onmousedown = null;
      gr.destroy();
    }
    if (tGr != null) tGr.destroy();
    element = bounds = pts = index = gr = tGr = null;
  }

  this.reactivate = function() {
    element.onmousedown = tGr.gc.onmousedown = null;
    element.onclick = tGr.gc.onclick = null;
    element.ondblclick = tGr.gc.ondblclick = null;
    element.onmousemove = tGr.gc.onmousemove = null;
    element.onmouseup = tGr.gc.onmouseup = null;
    var e = element;
    var c = callback;
    var cc = contCallback;
    this.deactivate();
    this.activate(e, c, cc);
  }

  function processMouseDown(e) {
    self.isActive = true;
    bounds = EsriUtils.getElementPageBounds(element);
    pts = new Array();
    index = 0;
    pts.push(EsriUtils.getXY(e).offset(-bounds.left, -bounds.top));
    EsriUtils.stopEvent(e);

    element.onmousedown = tGr.gc.onmousedown = null;
    element.onclick = tGr.gc.onclick = processClick;
    element.onmousemove = tGr.gc.onmousemove = processMouseMove;
    element.ondblclick = tGr.gc.ondblclick = processDblClick;
    return false;
  }

  function processMouseMove(e) {
  	if (JitkGeodesy.isLoading) return;
    tGr.clear();
    var pt = EsriUtils.getXY(e).offset(-bounds.left, -bounds.top);
    tGr.drawLine(pts[index], pt, this.symbol);
    if (isPgon) tGr.drawLine(pt, pts[0]);
    EsriUtils.stopEvent(e);
    return false;
  }

  function processClick(e) {
    pts.push(EsriUtils.getXY(e).offset(-bounds.left, -bounds.top));
    index++;
    if (index > 0) gr.drawLine(pts[index - 1], pts[index], this.symbol);
    EsriUtils.stopEvent(e);
    if (contCallback && index > 1) contCallback(pts);
    return false;
  }

  function processDblClick(e) {
    self.isActive = false;
    tGr.clear();
    gr.clear();
    tGr.gc.onclick = tGr.gc.onmousemove = tGr.gc.ondblclick = element.onclick = element.onmousemove = element.ondblclick = null;
    element.onmousedown = tGr.gc.onmousedown = processMouseDown;

    var newPts = new Array();
    for (var i=1;i<pts.length;i++) { if (pts[i].x != pts[i-1].x || pts[i].y != pts[i-1].y) newPts.push(pts[i-1]); }
    newPts.push(EsriUtils.getXY(e).offset(-bounds.left, -bounds.top));
    EsriUtils.stopEvent(e);
    callback(newPts);
    return false;
  }
}

function JitkMapPoly(id, toolName, isMarkerTool, isPolygon) {
  this.isPolygon = isPolygon;
  this.inheritsFrom(new EsriMapToolItem(id, toolName, new JitkDrawPolyShapeAction(this), isMarkerTool));
  this.points;
  var self = this;

  this.update = function() { self = this; }
  
  this.contPostAction = function(points){
    if (points.length < 2) return;
	self.points = points;
    var pts = "";
    var map = self.control;
    var viewLeft = map.viewBounds.left;
    var viewTop = map.viewBounds.top;
    for (var i=0;i<points.length;i++) {
      points[i] = points[i].offset(-viewLeft, -viewTop);
      if (i == 0) pts += points[i].x + ":" + points[i].y;
      else pts += "|" + points[i].x + ":" + points[i].y;
    }
    EsriUtils.addFormElement(map.formId, map.id, map.id);
    EsriUtils.addFormElement(map.formId, map.id + "_mode", self.id);
    EsriUtils.addFormElement(map.formId, map.id + "_coords", pts);
    if (self.clientPostBack) EsriUtils.addFormElement(map.formId, "doPostBack", "doPostBack");
    EsriUtils.submitForm(map.formId, self.clientPostBack, JitkGeodesy.processPostBack);
    JitkShowLoadingIndicator(JitkGeodesy.taskId);
  }
  
  this.activate = function() {
    if (this.action) this.action.activate(this.element, this.postAction, this.contPostAction);
    this.isActive = true;
  }

  this.postAction = function(points) {
    if (points.length < 2) return;
    self.update();
    var map = self.control;

    if (self.isMarker) {
      if (self.isPolygon) map.graphics.drawPolygon(points);
      else map.graphics.drawPolyline(points);
    }
    else {
      var pts = "";
      var viewLeft = map.viewBounds.left;
      var viewTop = map.viewBounds.top;
      for (var i=0;i<points.length;i++) {
        points[i] = points[i].offset(-viewLeft, -viewTop);
        if (i == 0) pts += points[i].x + ":" + points[i].y;
        else pts += "|" + points[i].x + ":" + points[i].y;
      }
      EsriUtils.addFormElement(map.formId, map.id, map.id);
      EsriUtils.addFormElement(map.formId, map.id + "_mode", self.id);
      EsriUtils.addFormElement(map.formId, map.id + "_coords", pts);
      if (self.clientPostBack) EsriUtils.addFormElement(map.formId, "doPostBack", "doPostBack");
      EsriUtils.submitForm(map.formId, self.clientPostBack, JitkGeodesy.processPostBack);
    }
    this.points = '';
  }
}

function JitkMapPolyline(id, toolName, isMarkerTool) { 
	return new JitkMapPoly(id, toolName, isMarkerTool, false); 
}

/**
 * Helper function to turn display of an element on or off
 */
function jitk_toggleElement(strElement, displayElement) {
	var el = document.getElementById(strElement);
	if (el != null) {
		el.style.display = displayElement;
	}
}

function checkTool(mapId, taskId) {
	JitkGeodesy.mapId = mapId;
	JitkGeodesy.taskId = taskId;
	
    if (!JitkGeodesy) {
    	return;
   	}
   	
    if (!EsriControls.maps[mapId]) {
		JitkGeodesy.checkTool();
		return;
	}
	
	JitkGeodesy.checkTool(EsriControls.maps[mapId].currentTool);
}

⌨️ 快捷键说明

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