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 + "米
松开完成绘制", {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 + "米
松开结束绘制", {
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 = '