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