esri_core.js
来自「esri的ArcGIS Server超级学习模板程序(for java)」· JavaScript 代码 · 共 1,599 行 · 第 1/4 页
JS
1,599 行
}
function processMouseMove(e) {
if (lineGraphic) tGr.remove(lineGraphic);
if (isPgon && closePolyGraphic) tGr.remove(closePolyGraphic);
if (bounds) {
var pt = EsriUtils.getXY(e).offset(-bounds.left, -bounds.top);
lineGraphic = tGr.drawLine(pts[index], pt, self.symbol);
if (isPgon) closePolyGraphic = tGr.drawLine(pt, pts[0], self.symbol);
}
EsriUtils.stopEvent(e);
return false;
}
function processClick(e) {
pts.push(EsriUtils.getXY(e).offset(-bounds.left, -bounds.top));
index++;
if (index > 0) polyGraphics.push(gr.drawLine(pts[index - 1], pts[index], self.symbol));
EsriUtils.stopEvent(e);
if (contCallback) contCallback(pts);
return false;
}
function processDblClick(e) {
clearGraphics();
tGr.gc.onclick = tGr.gc.onmousemove = tGr.gc.ondblclick = element.onclick = element.onmousemove = element.ondblclick = null;
element.onmousedown = tGr.gc.onmousedown = processMouseDown;
if (pts) {
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));
callback(newPts);
}
self.isActive = false;
EsriUtils.stopEvent(e);
return false;
}
}
function EsriDrawPolylineAction() { return new EsriDrawPolyShapeAction(false); }
function EsriDrawPolygonAction() { return new EsriDrawPolyShapeAction(true); }
function EsriDrawCircleAction() {
this.inheritsFrom(new EsriAction());
this.name = "EsriDrawCircleAction";
var element, callback, contCallback, bounds, center, gr, currPt, pointGraphic, circleGraphic;
var currLength = 0;
var createGraphic = true;
var self = this;
this.activate = function(elem, cF, ccF, ge) {
element = elem;
callback = cF;
contCallback = ccF;
if (ge) {
createGraphic = false;
gr = ge;
}
else {
gr = EsriUtils.createGraphicsElement(element.id + "gr", element);
EsriUtils.setElementStyle(gr.gc, "z-index:" + this.graphicsZIndex + ";");
}
element.style.cursor = self.cursor;
element.onmousedown = gr.gc.onmousedown = processMouseDown;
}
this.deactivate = function() {
this.isActive = false;
if (element != null) {
element.onmousedown = element.onmousemove = element.onmouseup = null;
element.style.cursor = "default";
}
if (gr != null) {
gr.gc.onmousedown = gr.gc.onmousemove = gr.gc.onmouseup = null;
if (pointGraphic) gr.remove(pointGraphic);
if (circleGraphic) gr.remove(circleGraphic);
if (createGraphic) gr.destroy();
}
element = gr = pointGraphic = circleGraphic = null;
}
this.reactivate = function() {
element.onmousedown = gr.gc.onmousedown = null;
element.onmousemove = gr.gc.onmousemove = null;
element.onmouseup = gr.gc.onmouseup = null;
var e = element;
var c = callback;
var cc = contCallback;
var ge = createGraphic ? null : gr;
this.deactivate();
this.activate(e, c, cc, ge);
}
function getLength(pt1, pt2) { return Math.sqrt(Math.pow(pt1.x - pt2.x, 2) + Math.pow(pt1.y - pt2.y, 2)); }
function processMouseDown(e) {
self.isActive = true;
bounds = EsriUtils.getElementPageBounds(element);
element.onmousedown = gr.gc.onmousedown = null;
element.onmousemove = gr.gc.onmousemove = processMouseMove;
element.onmouseup = gr.gc.onmouseup = processMouseUp;
center = EsriUtils.getXY(e).offset(-bounds.left, -bounds.top);
if (pointGraphic) gr.remove(pointGraphic);
if (circleGraphic) gr.remove(circleGraphic);
pointGraphic = gr.drawPoint(center, self.symbol);
EsriUtils.stopEvent(e);
return false;
}
function processMouseMove(e) {
var radius = Math.round(getLength(center, EsriUtils.getXY(e).offset(-bounds.left, -bounds.top)));
if (pointGraphic) gr.remove(pointGraphic);
if (circleGraphic) gr.remove(circleGraphic);
pointGraphic = gr.drawPoint(center,self.symbol);
circleGraphic = gr.drawCircle(center, radius, self.symbol);
EsriUtils.stopEvent(e);
if (contCallback) contCallback(center, radius);
return false;
}
function processMouseUp(e) {
if (pointGraphic) gr.remove(pointGraphic);
if (circleGraphic) gr.remove(circleGraphic);
element.onmousemove = gr.gc.onmousemove = element.onmouseup = gr.gc.onmouseup = null;
element.onmousedown = gr.gc.onmousedown = processMouseDown;
EsriUtils.stopEvent(e);
callback(center, getLength(center, EsriUtils.getXY(e).offset(-bounds.left, -bounds.top)));
self.isActive = false;
return false;
}
}
function EsriMouseWheelAction() {
this.inheritsFrom(new EsriAction());
this.name = "EsriMouseWheelAction";
var element, callback;
var wheelTimer, timerValue;
this.activate = function(elem, callbackFunc) {
element = elem;
callback = callbackFunc;
if (EsriUtils.isIE) element.onmousewheel = processMouseWheel;
else element.addEventListener("DOMMouseScroll", processMouseWheel, false);
}
this.deactivate = function() {
this.isActive = false;
if (element != null) {
if (EsriUtils.isIE) element.onmousewheel = null;
else element.removeEventListener("DOMMouseScroll", processMouseWheel, false);
}
}
function processMouseWheel(e) {
self.isActive = true;
var wheelValue = (EsriUtils.isIE) ? window.event.wheelDelta : -e.detail;
EsriUtils.stopEvent(e);
var value = wheelValue / EsriUtils.mouseWheelUnit;
if (timerValue) {
if (Math.abs(value) > Math.abs(timerValue)) timerValue = value;
else return;
}
else timerValue = value;
if (wheelTimer) clearTimeout(wheelTimer);
wheelTimer = setTimeout(function() { callback(value); timerValue = 0; self.isActive = false; }, 500);
self.isActive = false;
return false;
}
}
function EsriResizeElementAction(docInput, minWd, minHt, maxWd, maxHt) {
this.inheritsFrom(new EsriAction());
this.name = "EsriResizeElementAction";
this.cursor = "default";
this.excludeDirs = [];
var element, bd, pBd, startPt, callback, contCallback, direction;
var tol = 5;
var minw = minWd ? minWd : 0;
var minh = minHt ? minHt : 0;
var maxw = maxWd;
var maxh = maxHt;
var docInp = docInput;
var self = this;
this.activate = function(elem, cbFunc, ccbFunc) {
element = elem;
callback = cbFunc;
contCallback = ccbFunc;
pBd = EsriUtils.getElementPageBounds(element);
var borders = EsriUtils.getElementBorders(element);
pBd.left += borders.left;
pBd.top += borders.top;
pBd.width -= (borders.left + borders.right);
pBd.height -= (borders.top + borders.bottom);
bd = EsriUtils.getElementBounds(element);
if (! bd.width || bd.height) {
bd.width = pBd.width;
bd.height = pBd.height;
}
element.style.cursor = self.cursor;
direction = "";
element.onmousemove = processMouseMove;
self = this;
}
this.deactivate = function() {
this.isActive = false;
if (element != null) {
element.style.cursor = "default";
element.onmousemove = element.onmousedown = element.onmouseup = element = null;
}
if (docInp) document.onmousemove = document.onmouseup = null;
}
this.reactivate = function() {
element.onmousedown = element.onmousemove = element.onmouseup = null;
document.onmousemove = document.onmouseup = null;
direction = "";
var e = element;
var c = callback;
var cc = contCallback;
this.deactivate();
this.activate(e, c, cc);
}
this.setMinSize = function(wd, ht) {
minw = wd;
minh = ht;
}
this.setMaxSize = function(wd, ht) {
maxw = wd;
maxh = ht;
}
function processMouseMove(e) {
var xy = EsriUtils.getXY(e);
if (direction != "" && self.isActive) {
var b = bd.offset(0, 0);
var dX = xy.x - startPt.x;
var dY = xy.y - startPt.y;
if (direction.indexOf("n") == 0) {
b.top += dY;
if (dY < 0) b.height += Math.abs(dY);
else b.height -= dY;
}
else if (direction.indexOf("s") == 0) b.height += dY;
if (direction.indexOf("w") != -1) {
b.left += dX;
if (dX < 0) b.width += Math.abs(dX);
else b.width -= dX;
}
else if (direction.indexOf("e") != -1) b.width += dX;
if (b.width < minw) return false;
else if (b.height < minh) return false;
if (b.width < minw) {
if ((direction == "n" || direction == "nw" || direction == "w" || direction == "sw") && dX > 0) return false;
else if ((direction == "ne" || direction == "e" || direction == "se" || direction == "s") && dX < 0) return false;
}
else if (b.height < minh) {
if ((direction == "n" || direction == "ne" || direction == "nw" || direction == "w") && dY > 0) return false;
else if ((direction == "e" || direction == "se" || direction == "s" || direction == "sw") && dY < 0) return false;
}
else if (maxw && b.width > maxw && dX > 0) return false;
else if (maxh && b.height > maxh && dY > 0) return false;
EsriUtils.setElementStyle(element, b.toStyle());
if (contCallback) contCallback(b);
}
else {
var l = pBd.left;
var t = pBd.top
var r = l + pBd.width;
var b = t + pBd.height;
var dir = new Array();
for (var i=0;i<2;i++) {
if (xy.y >= (t - tol) && xy.y <= (t + tol) && dir[0] != "n") dir[i] = "n";
else if (xy.x >= (r - tol) && xy.x <= (r + tol) && dir[0] != "e") dir[i] = "e";
else if (xy.y >= (b - tol) && xy.y <= (b + tol) && dir[0] != "s") dir[i] = "s";
else if (xy.x >= (l - tol) && xy.x <= (l + tol) && dir[0] != "w") dir[i] = "w";
else dir[i] = null;
}
direction = "";
if (dir[0] != null) direction += dir[0];
if (dir[1] != null) direction += dir[1];
if (direction == "es") direction = "se";
else if (direction == "en") direction = "ne";
else if (direction == "ws") direction = "sw";
else if (direction == "wn") direction = "nw";
if (self.excludeDirs.indexOf(direction) != -1) {
direction = "";
return false;
}
if (direction) {
element.style.cursor = direction + "-resize";
element.onmousedown = processMouseDown;
}
else {
element.style.cursor = self.cursor;
element.onmousedown = null;
}
}
return false;
}
function processMouseDown(e) {
self.isActive = true;
startPt = EsriUtils.getXY(e);
element.onmouseup = processMouseUp;
if (docInp) {
document.onmousemove = processMouseMove;
document.onmouseup = processMouseUp;
}
return false;
}
function processMouseUp(e) {
processMouseMove(e);
pBd = EsriUtils.getElementPageBounds(element);
var tbd = EsriUtils.getElementBounds(element);
if (! tbd.equals(bd)) {
bd = tbd;
direction = "";
element.onmousedown = element.onmouseup = null;
if (docInp) document.onmousemove = document.onmouseup = null;
callback(bd);
}
self.isActive = false;
return false;
}
}
function EsriKeyInputAction() {
this.inheritsFrom(new EsriAction());
this.name = "EsriKeyInputAction";
var element, callback, contCallback;
var self = this;
this.activate = function(elem, cbF, ccbF) {
element = elem;
callback = cbF;
contCallback = ccbF;
element.onmouseover = processMouseOver;
element.onmouseout = processMouseOut;
}
this.deactivate = function() { element = callback = contCallback = element.onmouseover = element.onmouseout = document.onkeydown = document.onkeypress = document.onkeyup = null; }
function processMouseOver() {
if (EsriUtils.isIE) {
document.onkeydown = processKeyDownPress;
document.onkeypress = processKeyFalse;
}
else {
document.onkeydown = processKeyFalse;
document.onkeypress = processKeyDownPress;
}
document.onkeyup = processKeyUp;
return false;
}
function processMouseOut(e) {
EsriUtils.stopEvent(e);
document.onkeydown = document.onkeypress = document.onkeyup = null;
}
function processKeyFalse(e) {
EsriUtils.stopEvent(e);
return false;
}
function processKeyDownPress(e) {
self.isActive = true;
var kc = EsriUtils.getKeyCode(e);
EsriUtils.stopEvent(e);
return contCallback(kc);
}
function processKeyUp(e) {
var kc = EsriUtils.getKeyCode(e);
EsriUtils.stopEvent(e);
self.isActive = false;
return callback(kc);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?