You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1634 lines
59 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

var BMapGLLib = window.BMapGLLib = BMapGLLib || {};
var BMAP_DRAWING_MARKER = "marker", BMAP_DRAWING_POLYLINE = "polyline", BMAP_DRAWING_CIRCLE = "circle",
BMAP_DRAWING_RECTANGLE = "rectangle", BMAP_DRAWING_POLYGON = "polygon";
(function () {
var d = d || {guid: "$BAIDU$"};
(function () {
window[d.guid] = {};
d.extend = function (n, l) {
for (var m in l) {
if (l.hasOwnProperty(m)) {
n[m] = l[m]
}
}
return n
};
d.lang = d.lang || {};
d.lang.guid = function () {
return "TANGRAM__" + (window[d.guid]._counter++).toString(36)
};
window[d.guid]._counter = window[d.guid]._counter || 1;
window[d.guid]._instances = window[d.guid]._instances || {};
d.lang.Class = function (l) {
this.guid = l || d.lang.guid();
window[d.guid]._instances[this.guid] = this
};
window[d.guid]._instances = window[d.guid]._instances || {};
d.lang.isString = function (l) {
return "[object String]" == Object.prototype.toString.call(l)
};
d.lang.isFunction = function (l) {
return "[object Function]" == Object.prototype.toString.call(l)
};
d.lang.Class.prototype.toString = function () {
return "[object " + (this._className || "Object") + "]"
};
d.lang.Class.prototype.dispose = function () {
delete window[d.guid]._instances[this.guid];
for (var l in this) {
if (!d.lang.isFunction(this[l])) {
delete this[l]
}
}
this.disposed = true
};
d.lang.Event = function (l, m) {
this.type = l;
this.returnValue = true;
this.target = m || null;
this.currentTarget = null
};
d.lang.Class.prototype.addEventListener = function (o, n, m) {
if (!d.lang.isFunction(n)) {
return
}
!this.__listeners && (this.__listeners = {});
var l = this.__listeners, p;
if (typeof m == "string" && m) {
if (/[^\w\-]/.test(m)) {
throw ("nonstandard key:" + m)
} else {
n.hashCode = m;
p = m
}
}
o.indexOf("on") != 0 && (o = "on" + o);
typeof l[o] != "object" && (l[o] = {});
p = p || d.lang.guid();
n.hashCode = p;
l[o][p] = n
};
d.lang.Class.prototype.removeEventListener = function (n, m) {
if (d.lang.isFunction(m)) {
m = m.hashCode
} else {
if (!d.lang.isString(m)) {
return
}
}
!this.__listeners && (this.__listeners = {});
n.indexOf("on") != 0 && (n = "on" + n);
var l = this.__listeners;
if (!l[n]) {
return
}
l[n][m] && delete l[n][m]
};
d.lang.Class.prototype.dispatchEvent = function (o, l) {
if (d.lang.isString(o)) {
o = new d.lang.Event(o)
}
!this.__listeners && (this.__listeners = {});
l = l || {};
for (var n in l) {
o[n] = l[n]
}
var n, m = this.__listeners, q = o.type;
o.target = o.target || this;
o.currentTarget = this;
q.indexOf("on") != 0 && (q = "on" + q);
d.lang.isFunction(this[q]) && this[q].apply(this, arguments);
if (typeof m[q] == "object") {
for (n in m[q]) {
m[q][n].apply(this, arguments)
}
}
return o.returnValue
};
d.lang.inherits = function (r, p, o) {
var n, q, l = r.prototype, m = new Function();
m.prototype = p.prototype;
q = r.prototype = new m();
for (n in l) {
q[n] = l[n]
}
r.prototype.constructor = r;
r.superClass = p.prototype;
if ("string" == typeof o) {
q._className = o
}
};
d.dom = d.dom || {};
d._g = d.dom._g = function (l) {
if (d.lang.isString(l)) {
return document.getElementById(l)
}
return l
};
d.g = d.dom.g = function (l) {
if ("string" == typeof l || l instanceof String) {
return document.getElementById(l)
} else {
if (l && l.nodeName && (l.nodeType == 1 || l.nodeType == 9)) {
return l
}
}
return null
};
d.insertHTML = d.dom.insertHTML = function (o, l, n) {
o = d.dom.g(o);
var m, p;
if (o.insertAdjacentHTML) {
o.insertAdjacentHTML(l, n)
} else {
m = o.ownerDocument.createRange();
l = l.toUpperCase();
if (l == "AFTERBEGIN" || l == "BEFOREEND") {
m.selectNodeContents(o);
m.collapse(l == "AFTERBEGIN")
} else {
p = l == "BEFOREBEGIN";
m[p ? "setStartBefore" : "setEndAfter"](o);
m.collapse(p)
}
m.insertNode(m.createContextualFragment(n))
}
return o
};
d.ac = d.dom.addClass = function (r, s) {
r = d.dom.g(r);
var n = s.split(/\s+/), m = r.className, q = " " + m + " ", p = 0, o = n.length;
for (; p < o; p++) {
if (q.indexOf(" " + n[p] + " ") < 0) {
m += (m ? " " : "") + n[p]
}
}
r.className = m;
return r
};
d.event = d.event || {};
d.event._listeners = d.event._listeners || [];
d.on = d.event.on = function (m, p, r) {
p = p.replace(/^on/i, "");
m = d._g(m);
var q = function (t) {
r.call(m, t)
}, l = d.event._listeners, o = d.event._eventFilter, s, n = p;
p = p.toLowerCase();
if (o && o[p]) {
s = o[p](m, p, q);
n = s.type;
q = s.listener
}
if (m.addEventListener) {
m.addEventListener(n, q, false)
} else {
if (m.attachEvent) {
m.attachEvent("on" + n, q)
}
}
l[l.length] = [m, p, r, q, n];
return m
};
d.un = d.event.un = function (n, q, m) {
n = d._g(n);
q = q.replace(/^on/i, "").toLowerCase();
var t = d.event._listeners, o = t.length, p = !m, s, r, l;
while (o--) {
s = t[o];
if (s[1] === q && s[0] === n && (p || s[2] === m)) {
r = s[4];
l = s[3];
if (n.removeEventListener) {
n.removeEventListener(r, l, false)
} else {
if (n.detachEvent) {
n.detachEvent("on" + r, l)
}
}
t.splice(o, 1)
}
}
return n
};
d.getEvent = d.event.getEvent = function (l) {
return window.event || l
};
d.getTarget = d.event.getTarget = function (l) {
var l = d.getEvent(l);
return l.target || l.srcElement
};
d.preventDefault = d.event.preventDefault = function (l) {
var l = d.getEvent(l);
if (l.preventDefault) {
l.preventDefault()
} else {
l.returnValue = false
}
};
d.stopBubble = d.event.stopBubble = function (l) {
l = d.getEvent(l);
l.stopPropagation ? l.stopPropagation() : l.cancelBubble = true
};
d.browser = d.browser || {};
if (/msie (\d+\.\d)/i.test(navigator.userAgent)) {
d.browser.ie = d.ie = document.documentMode || +RegExp["\x241"]
}
})();
var i = BMapGLLib.DrawingManager = function (m, l) {
if (!m) {
return
}
a.push(this);
l = l || {};
this.overlays = [];
this._initialize(m, l)
};
d.lang.inherits(i, d.lang.Class, "DrawingManager");
i.prototype.open = function () {
if (this._isOpen == true) {
return true
}
e(this);
this._open()
};
i.prototype.close = function () {
if (this._isOpen == false) {
return true
}
var l = this;
this._close();
l._map.removeOverlay(b);
setTimeout(function () {
l._map.enableDoubleClickZoom()
}, 2000)
};
i.prototype.setDrawingMode = function (l) {
if (this._drawingType != l) {
e(this);
this._setDrawingMode(l)
}
};
i.prototype.getDrawingMode = function () {
return this._drawingType
};
i.prototype.enableCalculate = function () {
this._enableCalculate = true;
this._addGeoUtilsLibrary()
};
i.prototype.disableCalculate = function () {
this._enableCalculate = false
};
i.prototype.enableSorption = function () {
this._enableSorption = true
};
i.prototype.disableSorption = function () {
this._enableSorption = false
};
i.prototype.enableGpc = function () {
this._enableGpc = true;
this._addGPCLibrary()
};
i.prototype.disableGpc = function () {
this._enableGpc = false
};
i.prototype.getOverlays = function () {
return this.overlays
};
i.prototype.addOverlayData = function (l) {
return this.overlays.push(l)
};
i.prototype.setOverlaysData = function (l) {
return this.overlays = l
};
i.prototype.clearOverlayData = function (l) {
var n = this._map;
for (var m = 0; m < this.overlays.length; m++) {
if (this.overlays[m] === l) {
this.overlays.splice(m, 1);
return l
}
}
};
i.prototype.clearOverlay = function (l) {
var m = this._map;
var l = this.clearOverlayData(l);
if (l) {
m.removeOverlay(l)
}
};
i.prototype.clearOverlays = function () {
var l = this._map;
this.overlays.forEach(function (m) {
l.removeOverlay(m)
});
this.overlays.length = 0
};
i.prototype._initialize = function (n, m) {
this._map = n;
this._opts = m;
this._drawingType = m.drawingMode || BMAP_DRAWING_MARKER;
if (m.enableDrawingTool) {
this.enableDrawingTool()
}
if (m.sorptionDistance !== undefined) {
this.setSorptionDistance(m.sorptionDistance)
}
if (m.enableCalculate === true) {
this.enableCalculate()
} else {
this.disableCalculate()
}
if (m.enableLimit === true) {
var l = m.limitOptions;
this.limit = l
}
if (m.enableSorption === true) {
this.enableSorption()
} else {
this.disableSorption()
}
if (m.enableGpc === true) {
this.enableGpc()
} else {
this.disableGpc()
}
this._isOpen = !!(m.isOpen === true);
if (this._isOpen) {
this._open()
}
this.setPolygonOptions(m.polygonOptions);
this.setMarkerOptions(m.markerOptions);
this.setCircleOptions(m.circleOptions);
this.setPolylineOptions(m.polylineOptions);
this.setRectangleOptions(m.rectangleOptions);
this.setLabelOptions(m.labelOptions);
this.controlButton = m.controlButton == "right" ? "right" : "left"
};
i.prototype.enableDrawingTool = function () {
var l = this._opts;
if (!this._drawingTool) {
var m = new f(this, l.drawingToolOptions);
this._drawingTool = m
}
this._map.addControl(this._drawingTool)
};
i.prototype.disableDrawingTool = function () {
if (this._drawingTool) {
this._map.removeControl(this._drawingTool)
}
};
i.prototype.setSorptionDistance = function (l) {
this._sorptionDistance = l || 0
};
i.prototype.setPolygonOptions = function (l) {
this.polygonOptions = l || {}
};
i.prototype.setMarkerOptions = function (l) {
this.markerOptions = l || {}
};
i.prototype.setCircleOptions = function (l) {
this.circleOptions = l || {}
};
i.prototype.setPolylineOptions = function (l) {
this.polylineOptions = l || {}
};
i.prototype.setRectangleOptions = function (l) {
this.rectangleOptions = l || {}
};
i.prototype.setLabelOptions = function (l) {
this.labelOptions = l || {}
};
i.prototype._open = function () {
this._isOpen = true;
if (!this._mask) {
this._mask = new g()
}
this._map.addOverlay(this._mask);
this._setDrawingMode(this._drawingType)
};
i.prototype._setDrawingMode = function (l) {
this._drawingType = l;
if (this._isOpen) {
this._mask.__listeners = {};
switch (l) {
case BMAP_DRAWING_MARKER:
this._bindMarker();
break;
case BMAP_DRAWING_CIRCLE:
this._bindCircle();
break;
case BMAP_DRAWING_POLYLINE:
case BMAP_DRAWING_POLYGON:
this._bindPolylineOrPolygon();
break;
case BMAP_DRAWING_RECTANGLE:
this._bindRectangle();
break
}
}
if (this._drawingTool && this._isOpen) {
this._drawingTool.setStyleByDrawingMode(l)
}
};
i.prototype._close = function () {
this._isOpen = false;
if (this._mask) {
this._map.removeOverlay(this._mask)
}
if (this._drawingTool) {
this._drawingTool.setStyleByDrawingMode("hander")
}
};
i.prototype._bindMarker = function () {
var n = this, o = this._map, m = this._mask;
var l = function (q) {
var p = new BMapGL.Marker(q.point, n.markerOptions);
o.addOverlay(p);
n._dispatchOverlayComplete(p)
};
m.addEventListener("click", l)
};
var b = null;
i.prototype._bindCircle = function () {
var E = this, D = this._map, A = this._mask, p = null, G = [], x = null;
var o = 1;
var n = null;
var u = null;
var l = null;
var r = null;
var v = {strokeColor: "#4E6DF1", strokeWeight: 2};
var q = new BMapGL.Icon("//mapopen.bj.bcebos.com/cms/images/DrawingManager/circenter.png", new BMapGL.Size(20, 20));
var y = new BMapGL.Icon("///mapopen.bj.bcebos.com/cms/images/DrawingManager/nbsearch2.png", new BMapGL.Size(40, 20), {imageOffset: new BMapGL.Size(0, 10)});
var B = function (I) {
if (E.controlButton == "right" && (I.button == 1 || I.button == 0)) {
return
}
x = I.point;
var H = new BMapGL.Marker(x);
q.setImageSize(new BMapGL.Size(20, 20));
H.setIcon(q);
H.enableDragging();
H.addEventListener("dragstart", w);
H.addEventListener("dragging", s);
H.addEventListener("dragend", F);
D.addOverlay(H);
G.push(H);
p = new BMapGL.Circle(x, o, E.circleOptions);
D.addOverlay(p);
A.enableEdgeMove();
A.addEventListener("mousemove", t);
d.on(document, "mouseup", z)
};
var t = function (H) {
o = E._map.getDistance(x, H.point).toFixed(0);
p.setRadius(o);
D.removeOverlay(b);
b = new BMapGL.Label("半径:" + o + "米<br>松开完成绘制", {position: H.point, offset: new BMapGL.Size(10, 10)});
b.setStyle(E.labelOptions);
D.addOverlay(b)
};
var z = function (K) {
var L = D.getViewport(p.getBounds());
L.zoom -= 1;
D.setViewport(L);
D.removeOverlay(b);
var J = new BMapGL.Point(p.getBounds().getNorthEast().lng, x.lat);
A.hide();
n = new BMapGL.Marker(J);
n.setIcon(y);
n.enableDragging();
u = new BMapGL.Polyline([x, J], v);
var M = new BMapGL.Point((p.getBounds().getNorthEast().lng + x.lng) / 2, x.lat);
l = new j("circle", M, o, p, E);
G = G.concat([n, u, l]);
var H = null;
if (E.limit) {
H = E.limit.area
}
var I = {limit: H, type: "circle", point: J, overlay: p, overlays: G};
r = new c(I, E);
D.addOverlay(n);
D.addOverlay(u);
D.addOverlay(l);
D.addOverlay(r);
l.addEventListener("radiuschange", function (S) {
var N = S.radius;
p.setRadius(N);
var R = h(x, N, "east");
var O = new BMapGL.Point(R.lng, x.lat);
var Q = R.lng > x.lng ? (p.getBounds().getNorthEast().lng + x.lng) / 2 : (p.getBounds().getSouthWest().lng + x.lng) / 2;
var P = new BMapGL.Point(Q, x.lat);
n.setPosition(O);
l.setInfo(P, N);
r.setPosition(O, true);
r.updateWindow();
u.setPath([x, O])
});
n.addEventListener("dragging", function (R) {
var O = new BMapGL.Point(R.latLng.lng, x.lat);
var Q = R.latLng.lng > x.lng ? (p.getBounds().getNorthEast().lng + x.lng) / 2 : (p.getBounds().getSouthWest().lng + x.lng) / 2;
var N = R.latLng.lng > x.lng ? true : false;
var P = new BMapGL.Point(Q, x.lat);
R.target.setPosition(O);
l.setInfo(P, E._map.getDistance(x, R.latLng).toFixed(0));
r.setPosition(O, N);
u.setPath([x, O]);
o = E._map.getDistance(x, R.latLng).toFixed(0);
p.setRadius(E._map.getDistance(x, R.latLng))
});
n.addEventListener("dragend", function (N) {
r.updateWindow()
});
A.disableEdgeMove();
A.removeEventListener("mousemove", t);
A.removeEventListener("mousemove", C);
d.un(document, "mouseup", z);
E.close()
};
var C = function (H) {
d.preventDefault(H);
d.stopBubble(H);
if (E.controlButton == "right" && H.button == 1) {
return
}
if (x == null) {
B(H)
}
};
var m = function (H) {
d.preventDefault(H);
d.stopBubble(H);
D.removeOverlay(b);
b = new BMapGL.Label("按下确认中心点,拖拽确认半径", {position: H.point, offset: new BMapGL.Size(10, 10)});
b.setStyle(E.labelOptions);
D.addOverlay(b)
};
var w = function (H) {
D.removeOverlay(n);
D.removeOverlay(u);
D.removeOverlay(l);
D.removeOverlay(r)
};
var s = function (H) {
x = H.latLng;
p.setCenter(H.latLng)
};
var F = function (H) {
x = H.latLng;
z(H)
};
A.addEventListener("mousedown", C);
A.addEventListener("mousemove", m)
};
i.prototype._bindPolylineOrPolygon = function () {
var s = this, l = this._map, x = this._mask, u = [], r = null, o = null, p = null, m = false;
function t() {
var A = arguments[0];
var B = 0;
var z = 0;
for (var y = 0; y < A.length; y++) {
if (B < A[y].lng) {
B = A[y].lng;
z = y
}
}
return A[z]
}
var n = function (z) {
if (s.controlButton == "right" && (z.button == 1 || z.button == 0)) {
return
}
var y = z.point;
if (p) {
y = p
}
u.push(y);
r = u.concat(u[u.length - 1]);
if (u.length == 1) {
if (s._drawingType == BMAP_DRAWING_POLYLINE) {
o = new BMapGL.Polyline(r, s.polylineOptions)
} else {
if (s._drawingType == BMAP_DRAWING_POLYGON) {
o = new BMapGL.Polygon(r, s.polygonOptions)
}
}
l.addOverlay(o)
} else {
o.setPath(r)
}
if (!m) {
m = true;
x.enableEdgeMove();
x.removeEventListener("mousemove", v);
x.addEventListener("mousemove", w);
x.addEventListener("dblclick", q)
}
};
var w = function (z) {
var y = z.point;
if (s._enableSorption) {
var A = s.getSorptionMatch(y, s.overlays, s._sorptionDistance);
if (A && A.length > 0) {
p = A[0].point;
o.setPositionAt(r.length - 1, A[0].point);
return
}
}
p = null;
o.setPositionAt(r.length - 1, z.point);
l.removeOverlay(b);
b = new BMapGL.Label("单击绘制下一个点,双击完成绘制", {position: z.point, offset: new BMapGL.Size(10, 10)});
b.setStyle(s.labelOptions);
l.addOverlay(b)
};
var q = function (E) {
d.stopBubble(E);
m = false;
l.removeOverlay(b);
x.disableEdgeMove();
x.removeEventListener("mousedown", n);
x.removeEventListener("mousemove", w);
x.removeEventListener("mousemove", v);
x.removeEventListener("dblclick", q);
if (s.controlButton == "right") {
u.push(E.point)
} else {
if (d.ie <= 8) {
} else {
u.pop()
}
}
try {
if (s._enableGpc && window.gpcas && "polygon" === s._drawingType) {
var G = new gpcas.geometry.PolyDefault();
for (var B = 0; B < u.length; B++) {
G.addPoint(new gpcas.Point(u[B].lng, u[B].lat))
}
for (var A = 0; A < s.overlays.length; A++) {
var J = s.overlays[A].getPath();
var F = new gpcas.geometry.PolyDefault();
for (var B = 0; B < J.length; B++) {
F.addPoint(new gpcas.Point(J[B].lng, J[B].lat))
}
var H = G.difference(F);
var K = H.getPoints();
var I = [];
for (var B = 0; B < K.length; B++) {
I.push(new BMapGL.Point(K[B].x, K[B].y))
}
G = new gpcas.geometry.PolyDefault();
for (var B = 0; B < K.length; B++) {
G.addPoint(new gpcas.Point(K[B].x, K[B].y))
}
u = I
}
}
} catch (E) {
}
o.setPath(u);
var y = l.getViewport(u);
y.zoom -= 1;
l.setViewport(y);
o.enableEditing();
var z = null;
if (s.limit) {
z = "polygon" === s._drawingType ? s.limit.area : s.limit.distance
}
var D = {limit: z, type: s._drawingType, point: t(u), overlay: o, overlays: []};
var C = new c(D, s);
l.addOverlay(C);
o.addEventListener("lineupdate", function (M) {
var L = t(M.currentTarget.getPath());
C.setPosition(L, true);
C.updateWindow()
});
u.length = 0;
r.length = 0;
s.close()
};
var v = function (y) {
d.preventDefault(y);
d.stopBubble(y);
l.removeOverlay(b);
b = new BMapGL.Label("单击确认起点", {position: y.point, offset: new BMapGL.Size(10, 10)});
b.setStyle(s.labelOptions);
l.addOverlay(b)
};
x.addEventListener("mousemove", v);
x.addEventListener("mousedown", n);
x.addEventListener("dblclick", function (y) {
d.stopBubble(y)
})
};
i.prototype._bindRectangle = function () {
var r = this, m = this._map, v = this._mask, s = null, n = null;
function q(w, E) {
var x = new BMapGL.Point(w.lng, w.lat);
var D = new BMapGL.Point(E.lng, w.lat);
var A = new BMapGL.Point(E.lng, E.lat);
var C = new BMapGL.Point(w.lng, E.lat);
var F = new BMapGL.Point((w.lng + E.lng) / 2, w.lat);
var z = new BMapGL.Point(E.lng, (w.lat + E.lat) / 2);
var y = new BMapGL.Point((w.lng + E.lng) / 2, E.lat);
var B = new BMapGL.Point(w.lng, (w.lat + E.lat) / 2);
return [x, F, D, z, A, y, C, B]
}
var l = new BMapGL.Icon("//mapopen.bj.bcebos.com/cms/images/DrawingManager/bullet2.png", new BMapGL.Size(10, 10));
l.setImageSize(new BMapGL.Size(10, 10));
var o = function (x) {
d.stopBubble(x);
d.preventDefault(x);
if (r.controlButton == "right" && (x.button == 1 || x.button == 0)) {
return
}
n = x.point;
var w = n;
s = new BMapGL.Polygon(r._getRectanglePoint(n, w), r.rectangleOptions);
m.addOverlay(s);
v.enableEdgeMove();
v.addEventListener("mousemove", u);
d.on(document, "mouseup", p)
};
var u = function (z) {
m.removeOverlay(b);
s.setPath(r._getRectanglePoint(n, z.point));
var y = q(n, z.point);
var x = r._map.getDistance(n, y[2]).toFixed(0);
var w = r._map.getDistance(n, y[6]).toFixed(0);
b = new BMapGL.Label("尺寸:" + x + "米 x " + w + "米<br>松开结束绘制", {
position: z.point,
offset: new BMapGL.Size(10, 10)
});
b.setStyle(r.labelOptions);
m.addOverlay(b)
};
var p = function (H) {
v.hide();
var I = null;
var C = [];
var J = q(n, H.point);
var G = [];
var z = m.getViewport(J);
z.zoom -= 1;
m.setViewport(z);
m.removeOverlay(b);
var y = r._map.getDistance(n, J[2]).toFixed(0);
var K = r._map.getDistance(n, J[6]).toFixed(0);
var x = new j("rectangle", J[0], {width: y, height: K}, s, r);
for (var E = 0; E < J.length; E++) {
var D = new BMapGL.Marker(J[E]);
D.setIcon(l);
D.enableDragging();
C.push(D);
m.addOverlay(D);
G[E] = r.mc2ll(D.point);
D.addEventListener("mousedown", function (L) {
I = r.mc2ll(L.target.point)
});
D.addEventListener("dragging", function (N) {
var L = N.latLng;
for (var M = 0; M < G.length; M++) {
if (I.lng == G[M].lng) {
J[M].lng = L.lng
}
if (I.lat == G[M].lat) {
J[M].lat = L.lat
}
}
J = q(J[0], J[4]);
for (var M = 0; M < C.length; M++) {
C[M].setPosition(J[M])
}
y = r._map.getDistance(J[0], J[2]).toFixed(0);
K = r._map.getDistance(J[0], J[6]).toFixed(0);
x.setInfo(J[0], {width: y, height: K});
F.setPosition(J[3], true);
s.setPath(J)
});
D.addEventListener("dragend", function (N) {
for (var M = 0; M < C.length; M++) {
var L = C[M];
G[M] = r.mc2ll(L.point)
}
F.updateWindow()
})
}
x.addEventListener("rectwhchange", function (R) {
var Q = R.width;
var M = R.height;
var L = h(J[0], Q, "east");
var S = h(J[0], M, "south");
J[4].lng = L.lng;
J[4].lat = S.lat;
J = q(J[0], J[4]);
for (var O = 0; O < C.length; O++) {
C[O].setPosition(J[O])
}
x.setInfo(J[0], {width: Q, height: M});
F.setPosition(J[3], true);
s.setPath(J);
for (var P = 0; P < C.length; P++) {
var N = C[P];
G[P] = r.mc2ll(N.point)
}
F.updateWindow()
});
var w = [C, x];
var A = null;
if (r.limit) {
A = r.limit.area
}
var B = {limit: A, type: "rectangle", point: J[3], overlay: s, overlays: w};
var F = new c(B, r);
m.addOverlay(F);
m.addOverlay(x);
v.disableEdgeMove();
v.removeEventListener("mousemove", u);
v.removeEventListener("mousemove", t);
d.un(document, "mouseup", p);
r.close()
};
var t = function (w) {
d.preventDefault(w);
d.stopBubble(w);
m.removeOverlay(b);
b = new BMapGL.Label("按住确认起点,拖拽进行绘制", {position: w.point, offset: new BMapGL.Size(10, 10)});
b.setStyle(r.labelOptions);
m.addOverlay(b)
};
v.addEventListener("mousedown", o);
v.addEventListener("mousemove", t)
};
i.prototype._calculate = function (o, n) {
var m = {data: 0, label: null};
if (this._enableCalculate && BMapGLLib.GeoUtils) {
var p = o.toString();
switch (p) {
case"Polyline":
m.data = BMapGLLib.GeoUtils.getPolylineDistance(o);
break;
case"Polygon":
m.data = BMapGLLib.GeoUtils.getPolygonArea(o);
break;
case"Circle":
var l = o.getRadius();
m.data = Math.PI * l * l;
break
}
if (!m.data || m.data < 0) {
m.data = 0;
console.error("计算函数异常处理")
} else {
m.data = m.data.toFixed(2)
}
}
return m
};
i.prototype._addGeoUtilsLibrary = function () {
if (!BMapGLLib.GeoUtils) {
var l = document.createElement("script");
l.setAttribute("type", "text/javascript");
l.setAttribute("src", "//mapopen.cdn.bcebos.com/github/BMapGLLib/GeoUtils/src/GeoUtils.min.js");
document.body.appendChild(l)
}
};
i.prototype._addGPCLibrary = function () {
if (!window.gpcas) {
var l = document.createElement("script");
l.setAttribute("type", "text/javascript");
l.setAttribute("src", "//mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/gpc.js");
document.body.appendChild(l)
}
};
i.prototype._addLabel = function (l, n) {
var m = new BMapGL.Label(n, {position: l});
this._map.addOverlay(m);
return m
};
i.prototype._getRectanglePoint = function (m, l) {
return [new BMapGL.Point(m.lng, m.lat), new BMapGL.Point(l.lng, m.lat), new BMapGL.Point(l.lng, l.lat), new BMapGL.Point(m.lng, l.lat)]
};
i.prototype._dispatchOverlayComplete = function (m, n) {
var l = {overlay: m, drawingMode: this._drawingType};
if (n) {
l.calculate = n.data || null;
l.label = n.label || null
}
this.dispatchEvent(this._drawingType + "complete", m);
this.dispatchEvent("overlaycomplete", l)
};
i.prototype._dispatchOverlayCancel = function (m) {
var l = {overlay: m, drawingMode: this._drawingType};
this.dispatchEvent(this._drawingType + "cancel", m);
this.dispatchEvent("overlaycancel", l)
};
i.prototype.getSorptionMatch = function (G, L, p) {
p = p || 20;
var M = this._map;
var t = M.pointToPixel(G);
var x = [];
for (var I = 0; I < L.length; I++) {
var C = L[I].getPath();
var w = C[0];
var y = C[C.length - 1];
if (!w.equals(y)) {
C.push(C[0])
}
for (var K = 1; K < C.length; K++) {
var E = M.pointToPixel(C[K - 1]);
var D = M.pointToPixel(C[K]);
var H = [t.x - E.x, t.y - E.y];
var R = [D.x - E.x, D.y - E.y];
var m = [D.x - t.x, D.y - t.y];
var J = H[0] * R[0] + H[1] * R[1];
var s = Math.sqrt(Math.pow(H[0], 2) + Math.pow(H[1], 2)) * Math.sqrt(Math.pow(R[0], 2) + Math.pow(R[1], 2));
var N = Math.acos(J / s);
var l = R[0] * m[0] + R[1] * m[1];
var F = Math.sqrt(Math.pow(R[0], 2) + Math.pow(R[1], 2)) * Math.sqrt(Math.pow(m[0], 2) + Math.pow(m[1], 2));
var v = Math.acos(l / F);
if (N < Math.PI / 2 && v < Math.PI / 2) {
var n = Math.sqrt(Math.pow(H[0], 2) + Math.pow(H[1], 2));
var z = Math.sqrt(Math.pow(R[0], 2) + Math.pow(R[1], 2));
var o = Math.cos(N) * n;
var q = o / z;
var r = Math.sin(N) * n;
var u = [E.x + R[0] * q, E.y + R[1] * q];
if (r < p) {
x.push({point: M.pixelToPoint({x: u[0], y: u[1]}), length: r})
}
}
}
}
x.sort(function (B, A) {
return B.length - A.length
});
var Q = x.length > 0 ? x : null;
return Q
};
i.prototype.mc2ll = function (l) {
var n = this._map;
var m = n.mercatorToLnglat(l.lng, l.lat);
return new BMapGL.Point(m[0], m[1])
};
i.prototype.ll2mc = function (l) {
var n = this._map;
var m = n.lnglatToMercator(l.lng, l.lat);
return new BMapGL.Point(m[0], m[1])
};
function c(l, m) {
this.limit = l.limit;
this.type = l.type;
this.point = l.point;
this.overlay = l.overlay;
this.overlays = l.overlays;
this.DrawingManager = m
}
c.prototype = new BMapGL.Overlay();
c.prototype.dispatchEvent = d.lang.Class.prototype.dispatchEvent;
c.prototype.addEventListener = d.lang.Class.prototype.addEventListener;
c.prototype.removeEventListener = d.lang.Class.prototype.removeEventListener;
c.prototype.initialize = function (p) {
var o = this;
this._map = p;
var l = (this.type === "polyline" ? "长度" : "面积");
var n = (this.type === "polyline" ? "万米" : "万平方米");
var q = this.div = document.createElement("div");
q.className = "operateWindow";
var m = '<div><span id="confirmOperate"></span><span id="cancelOperate"></span><span id="warnOperate">' + l + "不超过" + this.limit / 10000 + n + "</span></div>";
q.innerHTML = m;
this._map.getPanes().markerPane.appendChild(q);
this.updateWindow();
this._bind();
return q
};
c.prototype._bind = function () {
var n = this;
var o = this._map;
var l = this.overlay;
var m = this.overlays;
document.getElementById("confirmOperate").addEventListener("click", function (s) {
o.removeOverlay(n);
if (n.type == "rectangle") {
var r = n.DrawingManager._calculate(l, l.getPath())
} else {
if (n.type == "circle") {
var r = n.DrawingManager._calculate(l, n.point)
} else {
if (n.type == "polygon") {
var r = n.DrawingManager._calculate(l, (l.getPath()));
n.DrawingManager.overlays.push(l);
l.disableEditing()
} else {
if (n.type == "polyline") {
var r = n.DrawingManager._calculate(l, (l.getPath()));
n.DrawingManager.overlays.push(l);
l.disableEditing()
}
}
}
}
n.DrawingManager._dispatchOverlayComplete(l, r);
for (var q = 0; q < m.length; q++) {
if (Array.isArray(m[q])) {
for (var p in m[q]) {
o.removeOverlay(m[q][p])
}
} else {
o.removeOverlay(m[q])
}
}
n.DrawingManager.close()
});
document.getElementById("cancelOperate").addEventListener("click", function (r) {
o.removeOverlay(n);
for (var q = 0; q < m.length; q++) {
if (Array.isArray(m[q])) {
for (var p in m[q]) {
o.removeOverlay(m[q][p])
}
} else {
o.removeOverlay(m[q])
}
}
o.removeOverlay(l);
n.DrawingManager._dispatchOverlayCancel(l);
n.DrawingManager._mask.show();
n.DrawingManager._setDrawingMode(n.type)
})
};
c.prototype.updateWindow = function () {
if (this.domElement === null) {
return
}
var m = this.overlay;
var l = this.limit;
var n;
if (this.type == "rectangle") {
n = this.DrawingManager._calculate(m, m.getPath())
} else {
if (this.type == "circle") {
n = this.DrawingManager._calculate(m, this.point)
} else {
if (this.type == "polygon") {
n = this.DrawingManager._calculate(m, m.getPath())
} else {
if (this.type == "polyline") {
n = this.DrawingManager._calculate(m, m.getPath())
}
}
}
}
if (Object.prototype.toString.call(l) === "[object Number]" && n.data > l) {
document.getElementById("confirmOperate").style.display = "none";
document.getElementById("warnOperate").style.display = "block"
} else {
document.getElementById("confirmOperate").style.display = "block";
document.getElementById("warnOperate").style.display = "none"
}
};
c.prototype.setPosition = function (m, l) {
this.point = m;
var o = this._map, n = o.pointToOverlayPixel(this.point);
if (l) {
this.div.classList.remove("operateLeft");
this.div.style.left = n.x + 15 + "px"
} else {
this.div.classList.add("operateLeft");
this.div.style.left = n.x - 105 + "px"
}
this.div.style.top = n.y - 16 + "px"
};
c.prototype.draw = function () {
var m = this._map, l = m.pointToOverlayPixel(this.point);
this.div.style.left = l.x + 15 + "px";
this.div.style.top = l.y - 16 + "px"
};
function j(n, l, o, m, p) {
this.type = n;
this.point = l;
this.number = o;
this.overlay = m;
this.DrawingManager = p
}
j.prototype = new BMapGL.Overlay();
j.prototype.dispatchEvent = d.lang.Class.prototype.dispatchEvent;
j.prototype.addEventListener = d.lang.Class.prototype.addEventListener;
j.prototype.removeEventListener = d.lang.Class.prototype.removeEventListener;
j.prototype.initialize = function (n) {
var m = this;
this._map = n;
var o = this.div = document.createElement("div");
o.className = "screenshot";
if (this.type == "circle") {
var l = '<div class="circlShot"><span id="screenshotNum">' + this.number + '</span><input id="circleInput" type="text" /><span class="unit">米</span></div>'
} else {
if (this.type == "rectangle") {
var l = '<div class="rectWH"><div class="wh"><span id="rectWidth">' + this.number.width + '</span><input id="rectWidthInput" type="text" /></div><span class="multiple">x</span><div class="wh"><span id="rectHeight">' + this.number.height + '</span><input id="rectHeightInput" type="text" /></div><span class="unit">米</span></div>'
}
}
o.innerHTML = l;
this._map.getPanes().markerPane.appendChild(o);
this._bind();
return o
};
j.prototype._bind = function () {
this.setNumber(this.number);
if (this.type == "circle") {
this.bindCircleEvent()
} else {
this.bindRectEvent()
}
};
j.prototype.bindCircleEvent = function () {
var m = this;
var l = document.getElementById("screenshotNum");
var n = document.getElementById("circleInput");
l.addEventListener("click", function (o) {
var p = l.innerText;
l.style.display = "none";
n.value = p;
n.style.display = "inline-block";
n.focus()
});
n.addEventListener("click", function (o) {
n.focus()
});
n.addEventListener("keydown", function (p) {
if (p.keyCode === 13) {
var q = n.value;
n.style.display = "none";
l.style.display = "inline-block";
l.innerText = q;
var o = {radius: q, overlay: m.overlay};
m._dispatchRadiusChange(o)
}
});
n.addEventListener("blur", function (p) {
var q = n.value;
n.style.display = "none";
l.style.display = "inline-block";
l.innerText = q;
var o = {radius: q, overlay: m.overlay};
m._dispatchRadiusChange(o)
})
};
j.prototype.bindRectEvent = function () {
var n = this;
var m = document.getElementById("rectWidth");
var p = document.getElementById("rectWidthInput");
var l = document.getElementById("rectHeight");
var o = document.getElementById("rectHeightInput");
p.value = m.innerText;
o.value = l.innerText;
m.addEventListener("click", function (q) {
var r = m.innerText;
m.style.display = "none";
p.value = r;
p.style.display = "inline-block";
p.focus()
});
l.addEventListener("click", function (q) {
var r = l.innerText;
l.style.display = "none";
o.value = r;
o.style.display = "inline-block";
o.focus()
});
p.addEventListener("click", function (q) {
p.focus()
});
o.addEventListener("click", function (q) {
o.focus()
});
p.addEventListener("keydown", function (t) {
if (t.keyCode === 13) {
var r = p.value;
var s = o.value;
p.style.display = "none";
o.style.display = "none";
m.style.display = "inline-block";
l.style.display = "inline-block";
m.innerText = r;
l.innerText = s;
var q = {width: r, height: s, overlay: n.overlay};
n._dispatchRectWHChange(q)
}
});
o.addEventListener("keydown", function (t) {
if (t.keyCode === 13) {
var r = p.value;
var s = o.value;
p.style.display = "none";
o.style.display = "none";
m.style.display = "inline-block";
l.style.display = "inline-block";
m.innerText = r;
l.innerText = s;
var q = {width: r, height: s, overlay: n.overlay};
n._dispatchRectWHChange(q)
}
})
};
j.prototype.setInfo = function (l, m) {
this.setNumber(m);
this.setPosition(l)
};
j.prototype.setNumber = function (l) {
if (this.type == "circle") {
document.getElementById("screenshotNum").textContent = l
} else {
document.getElementById("rectWidth").textContent = l.width;
document.getElementById("rectHeight").textContent = l.height
}
};
j.prototype.setPosition = function (l) {
this.point = l;
var o = this._map, n = this.type, m = o.pointToOverlayPixel(this.point);
if (n == "circle") {
this.div.style.left = m.x - 30 + "px";
this.div.style.top = m.y - 40 + "px"
} else {
if (n == "rectangle") {
this.div.style.left = m.x + "px";
this.div.style.top = m.y - 45 + "px"
}
}
};
j.prototype.draw = function () {
var n = this._map, m = this.type, l = n.pointToOverlayPixel(this.point);
if (m == "circle") {
this.div.style.left = l.x - 30 + "px";
this.div.style.top = l.y - 40 + "px"
} else {
if (m == "rectangle") {
this.div.style.left = l.x + "px";
this.div.style.top = l.y - 45 + "px"
}
}
};
j.prototype._dispatchRadiusChange = function (l) {
this.dispatchEvent("radiuschange", l)
};
j.prototype._dispatchRectWHChange = function (l) {
this.dispatchEvent("rectwhchange", l)
};
function g() {
this._enableEdgeMove = false
}
g.prototype = new BMapGL.Overlay();
g.prototype.dispatchEvent = d.lang.Class.prototype.dispatchEvent;
g.prototype.addEventListener = d.lang.Class.prototype.addEventListener;
g.prototype.removeEventListener = d.lang.Class.prototype.removeEventListener;
g.prototype.initialize = function (n) {
var m = this;
this._map = n;
var o = this.container = document.createElement("div");
var l = this._map.getSize();
o.style.cssText = "position:absolute;background:transparent;cursor:crosshair;width:" + l.width + "px;height:" + l.height + "px";
this._map.addEventListener("resize", function (p) {
m._adjustSize(p.size)
});
this._map.getPanes().floatPane.appendChild(o);
this._bind();
return o
};
g.prototype.draw = function () {
var n = this._map, l = n.pixelToPoint(new BMapGL.Pixel(0, 0)), m = n.pointToOverlayPixel(l);
this.container.style.left = m.x + "px";
this.container.style.top = m.y + "px"
};
g.prototype.enableEdgeMove = function () {
this._enableEdgeMove = true
};
g.prototype.disableEdgeMove = function () {
clearInterval(this._edgeMoveTimer);
this._enableEdgeMove = false
};
g.prototype._bind = function () {
var q = this, l = this._map, m = this.container, r = null, s = null;
var p = function (u) {
return {x: u.clientX, y: u.clientY}
};
var o = function (w) {
var v = w.type;
w = d.getEvent(w);
point = q.getDrawPoint(w);
var x = function (y) {
w.point = point;
q.dispatchEvent(w)
};
if (v == "mousedown") {
r = p(w)
}
var u = p(w);
if (v == "click") {
if (Math.abs(u.x - r.x) < 5 && Math.abs(u.y - r.y) < 5) {
if (!s || !(Math.abs(u.x - s.x) < 5 && Math.abs(u.y - s.y) < 5)) {
x("click");
s = p(w)
} else {
s = null
}
}
} else {
x(v)
}
};
var t = ["click", "mousedown", "mousemove", "mouseup", "dblclick"], n = t.length;
while (n--) {
d.on(m, t[n], o)
}
d.on(m, "mousemove", function (u) {
if (q._enableEdgeMove) {
q.mousemoveAction(u)
}
})
};
g.prototype.mousemoveAction = function (s) {
function l(x) {
var w = x.clientX, v = x.clientY;
if (x.changedTouches) {
w = x.changedTouches[0].clientX;
v = x.changedTouches[0].clientY
}
return new BMapGL.Pixel(w, v)
}
var m = this._map, t = this, n = m.pointToPixel(this.getDrawPoint(s)), p = l(s), q = p.x - n.x, o = p.y - n.y;
n = new BMapGL.Pixel((p.x - q), (p.y - o));
this._draggingMovePixel = n;
var u = m.pixelToPoint(n), r = {pixel: n, point: u};
this._panByX = this._panByY = 0;
if (n.x <= 20 || n.x >= m.width - 20 || n.y <= 50 || n.y >= m.height - 10) {
if (n.x <= 20) {
this._panByX = 8
} else {
if (n.x >= m.width - 20) {
this._panByX = -8
}
}
if (n.y <= 50) {
this._panByY = 8
} else {
if (n.y >= m.height - 10) {
this._panByY = -8
}
}
if (!this._edgeMoveTimer) {
this._edgeMoveTimer = setInterval(function () {
m.panBy(t._panByX, t._panByY, {noAnimation: true})
}, 30)
}
} else {
if (this._edgeMoveTimer) {
clearInterval(this._edgeMoveTimer);
this._edgeMoveTimer = null
}
}
};
g.prototype._adjustSize = function (l) {
this.container.style.width = l.width + "px";
this.container.style.height = l.height + "px"
};
g.prototype.getDrawPoint = function (q) {
var p = this._map, o = d.getTarget(q), m = q.offsetX || q.layerX || 0, r = q.offsetY || q.layerY || 0;
if (o.nodeType != 1) {
o = o.parentNode
}
while (o && o != p.getContainer()) {
if (!(o.clientWidth == 0 && o.clientHeight == 0 && o.offsetParent && o.offsetParent.nodeName == "TD")) {
m += o.offsetLeft || 0;
r += o.offsetTop || 0
}
o = o.offsetParent
}
var n = new BMapGL.Pixel(m, r);
var l = p.pixelToPoint(n);
return l
};
function f(m, l) {
this.drawingManager = m;
l = this.drawingToolOptions = l || {};
this._opts = {};
this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;
this.defaultOffset = new BMapGL.Size(10, 10);
this.defaultDrawingModes = [BMAP_DRAWING_MARKER, BMAP_DRAWING_CIRCLE, BMAP_DRAWING_POLYLINE, BMAP_DRAWING_POLYGON, BMAP_DRAWING_RECTANGLE];
if (l.drawingModes) {
this.drawingModes = l.drawingModes
} else {
this.drawingModes = this.defaultDrawingModes
}
if (l.hasCustomStyle) {
if (l.anchor) {
this.setAnchor(l.anchor)
}
if (l.offset) {
this.setOffset(l.offset)
}
}
}
f.prototype = new BMapGL.Control();
f.prototype.initialize = function (p) {
var m = this.container = document.createElement("div");
m.className = "BMapGLLib_Drawing";
var l = this.panel = document.createElement("div");
l.className = "BMapGLLib_Drawing_panel";
if (this.drawingToolOptions && this.drawingToolOptions.hasCustomStyle && this.drawingToolOptions.scale) {
this._setScale(this.drawingToolOptions.scale)
}
m.appendChild(l);
var n = this._generalHtml();
l.appendChild(n);
var o = this.tip = document.createElement("div");
o.className = "BMapGLLib_tip";
o.innerHTML = '<p class="BMapGLLib_tip_title"></p><p class="BMapGLLib_tip_text"></p>';
if (this.drawingToolOptions.enableTips === true) {
l.appendChild(o)
}
this._bind(l);
if (this.drawingToolOptions.customContainer) {
d.g(this.drawingToolOptions.customContainer).appendChild(m)
} else {
p.getContainer().appendChild(m)
}
return m
};
f.prototype._generalHtml = function (r) {
var q = this;
var m = {};
m.hander = "拖动地图";
m[BMAP_DRAWING_MARKER] = "画点";
m[BMAP_DRAWING_CIRCLE] = "圆形工具";
m[BMAP_DRAWING_POLYLINE] = "画折线";
m[BMAP_DRAWING_POLYGON] = "多边形工具";
m[BMAP_DRAWING_RECTANGLE] = "矩形工具";
var s = function (u, t) {
var v = document.createElement("a");
v.className = u;
v.href = "javascript:void(0)";
v.setAttribute("drawingType", t);
v.setAttribute("onfocus", "this.blur()");
v.addEventListener("mouseenter", function (x) {
var w = x.target.getAttribute("drawingType");
var y = m[w];
if (w === "hander") {
q.tip.children[0].innerText = y;
q.tip.children[1].innerText = "使用鼠标拖动地图"
} else {
q.tip.className += " " + w;
q.tip.children[0].innerText = y;
q.tip.children[1].innerText = "使用" + y + "选出目标区域"
}
q.tip.style.display = "block"
});
v.addEventListener("mouseleave", function (y) {
var w = y.target.getAttribute("drawingType");
var x = " " + q.tip.className.replace(/[\t\r\n]/g, "") + " ";
while (x.indexOf(" " + w + " ") >= 0) {
x = x.replace(" " + w + " ", " ")
}
q.tip.className = x.replace(/^\s+|\s+$/g, "");
q.tip.style.display = "none"
});
return v
};
var n = document.createDocumentFragment();
for (var o = 0, l = this.drawingModes.length; o < l; o++) {
var p = "BMapGLLib_box BMapGLLib_" + this.drawingModes[o];
if (o == l - 1) {
p += " BMapGLLib_last"
}
n.appendChild(s(p, this.drawingModes[o]))
}
return n
};
f.prototype._setScale = function (o) {
var n = 390, l = 50, p = -parseInt((n - n * o) / 2, 10), m = -parseInt((l - l * o) / 2, 10);
this.container.style.cssText = ["-moz-transform: scale(" + o + ");", "-o-transform: scale(" + o + ");", "-webkit-transform: scale(" + o + ");", "transform: scale(" + o + ");", "margin-left:" + p + "px;", "margin-top:" + m + "px;", "*margin-left:0px;", "*margin-top:0px;", "margin-left:0px\\0;", "margin-top:0px\\0;", "filter: progid:DXImageTransform.Microsoft.Matrix(", "M11=" + o + ",", "M12=0,", "M21=0,", "M22=" + o + ",", "SizingMethod='auto expand');"].join("")
};
f.prototype._bind = function (l) {
var m = this;
d.on(this.panel, "click", function (p) {
var o = d.getTarget(p);
var n = o.getAttribute("drawingType");
m.setStyleByDrawingMode(n);
m._bindEventByDraingMode(n)
})
};
f.prototype.setStyleByDrawingMode = function (m) {
if (!m) {
return
}
var n = this.panel.getElementsByTagName("a");
for (var o = 0, l = n.length; o < l; o++) {
var q = n[o];
if (q.getAttribute("drawingType") == m) {
var p = "BMapGLLib_box BMapGLLib_" + m + "_hover";
if (o == l - 1) {
p += " BMapGLLib_last"
}
q.className = p
} else {
q.className = q.className.replace(/_hover/, "")
}
}
};
f.prototype._bindEventByDraingMode = function (l) {
var n = this;
var m = this.drawingManager;
if (m._isOpen && m.getDrawingMode() === l) {
m.close();
m._map.enableDoubleClickZoom()
} else {
m.setDrawingMode(l);
m.open();
m._map.disableDoubleClickZoom()
}
};
var a = [];
function e(l) {
var m = a.length;
while (m--) {
if (a[m] != l) {
a[m].close()
}
}
}
function k(l, s) {
var B = [];
var p = l["lng"], n = l["lat"];
var u = s / 6378800, r = (Math.PI / 180) * n, z = (Math.PI / 180) * p;
for (var q = 0; q < 271; q += 9) {
var o = (Math.PI / 180) * q,
v = Math.asin(Math.sin(r) * Math.cos(u) + Math.cos(r) * Math.sin(u) * Math.cos(o)),
t = Math.atan2(Math.sin(o) * Math.sin(u) * Math.cos(r), Math.cos(u) - Math.sin(r) * Math.sin(v)),
w = ((z - t + Math.PI) % (2 * Math.PI)) - Math.PI,
A = new BMapGL.Point(w * (180 / Math.PI), v * (180 / Math.PI));
B.push(A)
}
var m = B[0];
B.push(new BMapGL.Point(m["lng"], m["lat"]));
return B
}
function h(m, l, A) {
var p = m["lng"], n = m["lat"];
var v = l / 6378800, r = (Math.PI / 180) * n, B = (Math.PI / 180) * p;
var q, t, s;
switch (A) {
case"North":
case"north":
case"N":
case"n":
q = 0;
t = m.lng;
break;
case"West":
case"west":
case"W":
case"w":
q = 90;
s = m.lat;
break;
case"South":
case"south":
case"S":
case"s":
q = 180;
t = m.lng;
break;
case"East":
case"east":
case"E":
case"e":
q = 270;
s = m.lat;
break;
default:
q = ~~A;
break
}
var o = (Math.PI / 180) * q, w = Math.asin(Math.sin(r) * Math.cos(v) + Math.cos(r) * Math.sin(v) * Math.cos(o)),
u = Math.atan2(Math.sin(o) * Math.sin(v) * Math.cos(r), Math.cos(v) - Math.sin(r) * Math.sin(w)),
z = ((B - u + Math.PI) % (2 * Math.PI)) - Math.PI,
C = new BMapGL.Point(t || z * (180 / Math.PI), s || w * (180 / Math.PI));
C.lng = parseFloat(C.lng.toFixed(6));
C.lat = parseFloat(C.lat.toFixed(6));
return C
}
})();