📄 esri_core.js
字号:
function processMouseDown(e) {
self.isActive = false;
var pt = EsriUtils.getXY(e).offset(-bounds.left, -bounds.top);
EsriUtils.stopEvent(e);
self.isActive = false;
callback(pt);
return false;
}
}
function EsriDrawPolyShapeAction(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.lineColor;
gr.lineWidth = this.lineWidth;
gr.lineOpacity = this.lineOpacity;
tGr = EsriUtils.createGraphicsElement(element.id + "tGr", element);
EsriUtils.setElementStyle(tGr.gc, "z-index:" + this.graphicsZIndex + ";");
tGr.lineColor = this.lineColor;
tGr.lineWidth = this.lineWidth;
tGr.lineOpacity = this.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) {
tGr.clear();
var pt = EsriUtils.getXY(e).offset(-bounds.left, -bounds.top);
tGr.drawLine(pts[index], pt);
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]);
EsriUtils.stopEvent(e);
if (contCallback) 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 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;
var currLength = 0;
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.lineColor;
gr.lineWidth = this.lineWidth;
gr.lineOpacity = this.lineOpacity;
gr.fillColor = this.fillColor;
gr.fillOpacity = this.fillOpacity;
element.style.cursor = gr.gc.style.cursor = this.cursor;
element.onmousedown = gr.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();
}
element = gr = 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;
this.deactivate();
this.activate(e, c, cc);
}
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);
gr.clear();
gr.drawPoint(center);
EsriUtils.stopEvent(e);
return false;
}
function processMouseMove(e) {
var radius = Math.round(getLength(center, EsriUtils.getXY(e).offset(-bounds.left, -bounds.top)));
gr.clear();
gr.drawPoint(center);
gr.drawCircle(center, radius);
EsriUtils.stopEvent(e);
if (contCallback) contCallback(center, radius);
return false;
}
function processMouseUp(e) {
self.isActive = false;
gr.clear();
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)));
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);
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);
bd = EsriUtils.getElementBounds(element);
if (! bd.width || bd.height) {
bd.width = pBd.width;
bd.height = pBd.height;
}
element.style.cursor = this.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);
}
function processMouseMove(e) {
var xy = EsriUtils.getXY(e);
EsriUtils.stopEvent(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 && dX < 0) return;
else if (b.height < minh && dY < 0) return;
else if (maxw && b.width > maxw && dX > 0) return;
else if (maxh && b.height > maxh && dY > 0) return;
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;
}
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) {
self.isActive = false;
processMouseMove(e);
pBd = EsriUtils.getElementPageBounds(element);
bd = EsriUtils.getElementBounds(element);
direction = "";
element.onmousedown = element.onmouseup = null;
if (docInp) document.onmousemove = document.onmouseup = null;
callback(bd);
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() {
processMouseOut();
element = callback = 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) {
self.isActive = false;
var kc = EsriUtils.getKeyCode(e);
EsriUtils.stopEvent(e);
return callback(kc);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -