|
@ -0,0 +1,4184 @@
|
|
|
window.TILE_VERSION = {
|
|
|
"ditu": {
|
|
|
"normal": {
|
|
|
"version": "088",
|
|
|
"updateDate": "20190929"
|
|
|
},
|
|
|
"satellite": {
|
|
|
"version": "009",
|
|
|
"updateDate": "20190929"
|
|
|
},
|
|
|
"normalTraffic": {
|
|
|
"version": "081",
|
|
|
"updateDate": "20190929"
|
|
|
},
|
|
|
"satelliteTraffic": {
|
|
|
"version": "083",
|
|
|
"updateDate": "20190929"
|
|
|
},
|
|
|
"mapJS": {
|
|
|
"version": "104",
|
|
|
"updateDate": "20190929"
|
|
|
},
|
|
|
"satelliteStreet": {
|
|
|
"version": "083",
|
|
|
"updateDate": "20190929"
|
|
|
},
|
|
|
"earthVector": {
|
|
|
"version": "001",
|
|
|
"updateDate": "20190929"
|
|
|
}
|
|
|
},
|
|
|
"webapp": {
|
|
|
"high_normal": {
|
|
|
"version": "001",
|
|
|
"updateDate": "20190929"
|
|
|
},
|
|
|
"lower_normal": {
|
|
|
"version": "002",
|
|
|
"updateDate": "20190929"
|
|
|
}
|
|
|
},
|
|
|
"api_for_mobile": {
|
|
|
"vector": {
|
|
|
"version": "002",
|
|
|
"updateDate": "20190929"
|
|
|
},
|
|
|
"vectorIcon": {
|
|
|
"version": "002",
|
|
|
"updateDate": "20190929"
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
window.BMAP_AUTHENTIC_KEY = "hlDtW6AATwvq3WZ7QGMbQKSNMvM59BLZ";
|
|
|
(function() {
|
|
|
(function() {
|
|
|
var g, J = g = J || {
|
|
|
version: "1.3.4"
|
|
|
};
|
|
|
J.guid = "$BAIDU$";
|
|
|
window[J.guid] = window[J.guid] || {};
|
|
|
J.object = J.object || {};
|
|
|
J.extend = J.object.extend = function(N, L) {
|
|
|
for (var M in L) {
|
|
|
if (L.hasOwnProperty(M)) {
|
|
|
N[M] = L[M]
|
|
|
}
|
|
|
}
|
|
|
return N
|
|
|
};
|
|
|
J.dom = J.dom || {};
|
|
|
J.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
|
|
|
};
|
|
|
J.g = J.G = J.dom.g;
|
|
|
J.dom.hide = function(L) {
|
|
|
L = J.dom.g(L);
|
|
|
L.style.display = "none";
|
|
|
return L
|
|
|
};
|
|
|
J.hide = J.dom.hide;
|
|
|
J.lang = J.lang || {};
|
|
|
J.lang.isString = function(L) {
|
|
|
return "[object String]" == Object.prototype.toString.call(L)
|
|
|
};
|
|
|
J.isString = J.lang.isString;
|
|
|
J.dom._g = function(L) {
|
|
|
if (J.lang.isString(L)) {
|
|
|
return document.getElementById(L)
|
|
|
}
|
|
|
return L
|
|
|
};
|
|
|
J._g = J.dom._g;
|
|
|
J.dom.contains = function(L, M) {
|
|
|
var N = J.dom._g;
|
|
|
L = N(L);
|
|
|
M = N(M);
|
|
|
return L.contains ? L != M && L.contains(M) : !!(L.compareDocumentPosition(M) & 16)
|
|
|
};
|
|
|
J.browser = J.browser || {};
|
|
|
J.dom._NAME_ATTRS = (function() {
|
|
|
var L = {
|
|
|
cellpadding: "cellPadding",
|
|
|
cellspacing: "cellSpacing",
|
|
|
colspan: "colSpan",
|
|
|
rowspan: "rowSpan",
|
|
|
valign: "vAlign",
|
|
|
usemap: "useMap",
|
|
|
frameborder: "frameBorder"
|
|
|
};
|
|
|
L.htmlFor = "for";
|
|
|
L.className = "class";
|
|
|
return L
|
|
|
})();
|
|
|
J.dom.setAttr = function(M, L, N) {
|
|
|
M = J.dom.g(M);
|
|
|
if ("style" == L) {
|
|
|
M.style.cssText = N
|
|
|
} else {
|
|
|
L = J.dom._NAME_ATTRS[L] || L;
|
|
|
M.setAttribute(L, N)
|
|
|
}
|
|
|
return M
|
|
|
};
|
|
|
J.setAttr = J.dom.setAttr;
|
|
|
J.dom.setAttrs = function(N, L) {
|
|
|
N = J.dom.g(N);
|
|
|
for (var M in L) {
|
|
|
J.dom.setAttr(N, M, L[M])
|
|
|
}
|
|
|
return N
|
|
|
};
|
|
|
J.setAttrs = J.dom.setAttrs;
|
|
|
J.string = J.string || {};
|
|
|
J.dom.removeClass = function(Q, R) {
|
|
|
Q = J.dom.g(Q);
|
|
|
var O = Q.className.split(/\s+/),
|
|
|
S = R.split(/\s+/),
|
|
|
M, L = S.length,
|
|
|
N, P = 0;
|
|
|
for (; P < L; ++P) {
|
|
|
for (N = 0, M = O.length; N < M; ++N) {
|
|
|
if (O[N] == S[P]) {
|
|
|
O.splice(N, 1);
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
Q.className = O.join(" ");
|
|
|
return Q
|
|
|
};
|
|
|
J.removeClass = J.dom.removeClass;
|
|
|
J.dom.insertHTML = function(O, L, N) {
|
|
|
O = J.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
|
|
|
};
|
|
|
J.insertHTML = J.dom.insertHTML;
|
|
|
J.dom.show = function(L) {
|
|
|
L = J.dom.g(L);
|
|
|
L.style.display = "";
|
|
|
return L
|
|
|
};
|
|
|
J.show = J.dom.show;
|
|
|
J.dom.getDocument = function(L) {
|
|
|
L = J.dom.g(L);
|
|
|
return L.nodeType == 9 ? L : L.ownerDocument || L.document
|
|
|
};
|
|
|
J.dom.addClass = function(Q, R) {
|
|
|
Q = J.dom.g(Q);
|
|
|
var M = R.split(/\s+/),
|
|
|
L = Q.className,
|
|
|
P = " " + L + " ",
|
|
|
O = 0,
|
|
|
N = M.length;
|
|
|
for (; O < N; O++) {
|
|
|
if (P.indexOf(" " + M[O] + " ") < 0) {
|
|
|
L += " " + M[O]
|
|
|
}
|
|
|
}
|
|
|
Q.className = L;
|
|
|
return Q
|
|
|
};
|
|
|
J.addClass = J.dom.addClass;
|
|
|
J.dom._styleFixer = J.dom._styleFixer || {};
|
|
|
J.dom._styleFilter = J.dom._styleFilter || [];
|
|
|
J.dom._styleFilter.filter = function(M, P, Q) {
|
|
|
for (var L = 0, O = J.dom._styleFilter, N; N = O[L]; L++) {
|
|
|
if (N = N[Q]) {
|
|
|
P = N(M, P)
|
|
|
}
|
|
|
}
|
|
|
return P
|
|
|
};
|
|
|
J.string.toCamelCase = function(L) {
|
|
|
if (L.indexOf("-") < 0 && L.indexOf("_") < 0) {
|
|
|
return L
|
|
|
}
|
|
|
return L.replace(/[-_][^-_]/g, function(M) {
|
|
|
return M.charAt(1).toUpperCase()
|
|
|
})
|
|
|
};
|
|
|
J.dom.getStyle = function(N, M) {
|
|
|
var Q = J.dom;
|
|
|
N = Q.g(N);
|
|
|
M = J.string.toCamelCase(M);
|
|
|
var P = N.style[M];
|
|
|
if (!P) {
|
|
|
var L = Q._styleFixer[M],
|
|
|
O = N.currentStyle || getComputedStyle(N, null);
|
|
|
P = L && L.get ? L.get(N, O) : O[L || M]
|
|
|
}
|
|
|
if (L = Q._styleFilter) {
|
|
|
P = L.filter(M, P, "get")
|
|
|
}
|
|
|
return P
|
|
|
};
|
|
|
J.getStyle = J.dom.getStyle;
|
|
|
if (/opera\/(\d+\.\d)/i.test(navigator.userAgent)) {
|
|
|
J.browser.opera = +RegExp["\x241"]
|
|
|
}
|
|
|
J.browser.isWebkit = /webkit/i.test(navigator.userAgent);
|
|
|
J.browser.isGecko = /gecko/i.test(navigator.userAgent) && !/like gecko/i.test(navigator.userAgent);
|
|
|
J.browser.isStrict = document.compatMode == "CSS1Compat";
|
|
|
J.dom.getPosition = function(L) {
|
|
|
L = J.dom.g(L);
|
|
|
var U = J.dom.getDocument(L),
|
|
|
O = J.browser,
|
|
|
R = J.dom.getStyle,
|
|
|
N = O.isGecko > 0 && U.getBoxObjectFor && R(L, "position") == "absolute" && (L.style.top === "" || L.style.left ===
|
|
|
""),
|
|
|
S = {
|
|
|
left: 0,
|
|
|
top: 0
|
|
|
},
|
|
|
Q = (O.ie && !O.isStrict) ? U.body : U.documentElement,
|
|
|
V, M;
|
|
|
if (L == Q) {
|
|
|
return S
|
|
|
}
|
|
|
if (L.getBoundingClientRect) {
|
|
|
M = L.getBoundingClientRect();
|
|
|
S.left = Math.floor(M.left) + Math.max(U.documentElement.scrollLeft, U.body.scrollLeft);
|
|
|
S.top = Math.floor(M.top) + Math.max(U.documentElement.scrollTop, U.body.scrollTop);
|
|
|
S.left -= U.documentElement.clientLeft;
|
|
|
S.top -= U.documentElement.clientTop;
|
|
|
var T = U.body,
|
|
|
W = parseInt(R(T, "borderLeftWidth")),
|
|
|
P = parseInt(R(T, "borderTopWidth"));
|
|
|
if (O.ie && !O.isStrict) {
|
|
|
S.left -= isNaN(W) ? 2 : W;
|
|
|
S.top -= isNaN(P) ? 2 : P
|
|
|
}
|
|
|
} else {
|
|
|
V = L;
|
|
|
do {
|
|
|
S.left += V.offsetLeft;
|
|
|
S.top += V.offsetTop;
|
|
|
if (O.isWebkit > 0 && R(V, "position") == "fixed") {
|
|
|
S.left += U.body.scrollLeft;
|
|
|
S.top += U.body.scrollTop;
|
|
|
break
|
|
|
}
|
|
|
V = V.offsetParent
|
|
|
} while (V && V != L);
|
|
|
if (O.opera > 0 || (O.isWebkit > 0 && R(L, "position") == "absolute")) {
|
|
|
S.top -= U.body.offsetTop
|
|
|
}
|
|
|
V = L.offsetParent;
|
|
|
while (V && V != U.body) {
|
|
|
S.left -= V.scrollLeft;
|
|
|
if (!O.opera || V.tagName != "TR") {
|
|
|
S.top -= V.scrollTop
|
|
|
}
|
|
|
V = V.offsetParent
|
|
|
}
|
|
|
}
|
|
|
return S
|
|
|
};
|
|
|
if (/firefox\/(\d+\.\d)/i.test(navigator.userAgent)) {
|
|
|
J.browser.firefox = +RegExp["\x241"]
|
|
|
}(function() {
|
|
|
var L = navigator.userAgent;
|
|
|
if (/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(L) && !/chrome/i.test(L)) {
|
|
|
J.browser.safari = +(RegExp["\x241"] || RegExp["\x242"])
|
|
|
}
|
|
|
})();
|
|
|
if (/chrome\/(\d+\.\d)/i.test(navigator.userAgent)) {
|
|
|
J.browser.chrome = +RegExp["\x241"]
|
|
|
}
|
|
|
J.array = J.array || {};
|
|
|
J.array.each = function(Q, O) {
|
|
|
var N, P, M, L = Q.length;
|
|
|
if ("function" == typeof O) {
|
|
|
for (M = 0; M < L; M++) {
|
|
|
P = Q[M];
|
|
|
N = O.call(Q, P, M);
|
|
|
if (N === false) {
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return Q
|
|
|
};
|
|
|
J.each = J.array.each;
|
|
|
J.lang.guid = function() {
|
|
|
return "GUID__" + (window[J.guid]._counter++).toString(36)
|
|
|
};
|
|
|
window[J.guid]._counter = window[J.guid]._counter || 1;
|
|
|
window[J.guid]._instances = window[J.guid]._instances || {};
|
|
|
J.lang.isFunction = function(L) {
|
|
|
return "[object Function]" == Object.prototype.toString.call(L)
|
|
|
};
|
|
|
J.lang.isNumber = function(L) {
|
|
|
return "[object Number]" == Object.prototype.toString.call(L)
|
|
|
};
|
|
|
J.lang.Class = function(L) {
|
|
|
this.guid = L || J.lang.guid();
|
|
|
window[J.guid]._instances[this.guid] = this
|
|
|
};
|
|
|
window[J.guid]._instances = window[J.guid]._instances || {};
|
|
|
J.lang.Class.prototype.dispose = function() {
|
|
|
delete window[J.guid]._instances[this.guid];
|
|
|
for (var L in this) {
|
|
|
if (!J.lang.isFunction(this[L])) {
|
|
|
delete this[L]
|
|
|
}
|
|
|
}
|
|
|
this.disposed = true
|
|
|
};
|
|
|
J.lang.Class.prototype.toString = function() {
|
|
|
return "[object " + (this._className || "Object") + "]"
|
|
|
};
|
|
|
J.lang.Event = function(L, M) {
|
|
|
this.type = L;
|
|
|
this.returnValue = true;
|
|
|
this.target = M || null;
|
|
|
this.currentTarget = null
|
|
|
};
|
|
|
J.lang.Class.prototype.addEventListener = function(O, N, M) {
|
|
|
if (!J.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 || J.lang.guid();
|
|
|
N.hashCode = P;
|
|
|
L[O][P] = N
|
|
|
};
|
|
|
J.lang.Class.prototype.removeEventListener = function(N, M) {
|
|
|
if (J.lang.isFunction(M)) {
|
|
|
M = M.hashCode
|
|
|
} else {
|
|
|
if (!J.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]
|
|
|
};
|
|
|
J.lang.Class.prototype.dispatchEvent = function(O, L) {
|
|
|
if (J.lang.isString(O)) {
|
|
|
O = new J.lang.Event(O)
|
|
|
}!this.__listeners && (this.__listeners = {});
|
|
|
L = L || {};
|
|
|
for (var N in L) {
|
|
|
O[N] = L[N]
|
|
|
}
|
|
|
var N, M = this.__listeners,
|
|
|
P = O.type;
|
|
|
O.target = O.target || this;
|
|
|
O.currentTarget = this;
|
|
|
P.indexOf("on") != 0 && (P = "on" + P);
|
|
|
J.lang.isFunction(this[P]) && this[P].apply(this, arguments);
|
|
|
if (typeof M[P] == "object") {
|
|
|
for (N in M[P]) {
|
|
|
M[P][N].apply(this, arguments)
|
|
|
}
|
|
|
}
|
|
|
return O.returnValue
|
|
|
};
|
|
|
J.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
|
|
|
}
|
|
|
};
|
|
|
J.inherits = J.lang.inherits;
|
|
|
J.lang.instance = function(L) {
|
|
|
return window[J.guid]._instances[L] || null
|
|
|
};
|
|
|
J.platform = J.platform || {};
|
|
|
J.platform.isAndroid = /android/i.test(navigator.userAgent);
|
|
|
if (/android (\d+(\.\d)?)/i.test(navigator.userAgent)) {
|
|
|
J.platform.android = J.android = RegExp["\x241"]
|
|
|
}
|
|
|
J.platform.isIpad = /ipad/i.test(navigator.userAgent);
|
|
|
J.platform.isIphone = /iphone/i.test(navigator.userAgent);
|
|
|
J.platform.iosVersion = /iphone os (\d)\_/i.test(navigator.userAgent) ? +RegExp["\x241"] : 0;
|
|
|
J.lang.Event.prototype.inherit = function(N) {
|
|
|
var M = this;
|
|
|
this.domEvent = N = window.event || N;
|
|
|
M.clientX = N.clientX || N.pageX;
|
|
|
M.clientY = N.clientY || N.pageY;
|
|
|
M.offsetX = N.offsetX || N.layerX;
|
|
|
M.offsetY = N.offsetY || N.layerY;
|
|
|
M.screenX = N.screenX;
|
|
|
M.screenY = N.screenY;
|
|
|
M.ctrlKey = N.ctrlKey || N.metaKey;
|
|
|
M.shiftKey = N.shiftKey;
|
|
|
M.altKey = N.altKey;
|
|
|
if (N.touches) {
|
|
|
M.touches = [];
|
|
|
for (var L = 0; L < N.touches.length; L++) {
|
|
|
M.touches.push({
|
|
|
clientX: N.touches[L].clientX,
|
|
|
clientY: N.touches[L].clientY,
|
|
|
screenX: N.touches[L].screenX,
|
|
|
screenY: N.touches[L].screenY,
|
|
|
pageX: N.touches[L].pageX,
|
|
|
pageY: N.touches[L].pageY,
|
|
|
target: N.touches[L].target,
|
|
|
identifier: N.touches[L].identifier
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
if (N.changedTouches) {
|
|
|
M.changedTouches = [];
|
|
|
for (var L = 0; L < N.changedTouches.length; L++) {
|
|
|
M.changedTouches.push({
|
|
|
clientX: N.changedTouches[L].clientX,
|
|
|
clientY: N.changedTouches[L].clientY,
|
|
|
screenX: N.changedTouches[L].screenX,
|
|
|
screenY: N.changedTouches[L].screenY,
|
|
|
pageX: N.changedTouches[L].pageX,
|
|
|
pageY: N.changedTouches[L].pageY,
|
|
|
target: N.changedTouches[L].target,
|
|
|
identifier: N.changedTouches[L].identifier
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
if (N.targetTouches) {
|
|
|
M.targetTouches = [];
|
|
|
for (var L = 0; L < N.targetTouches.length; L++) {
|
|
|
M.targetTouches.push({
|
|
|
clientX: N.targetTouches[L].clientX,
|
|
|
clientY: N.targetTouches[L].clientY,
|
|
|
screenX: N.targetTouches[L].screenX,
|
|
|
screenY: N.targetTouches[L].screenY,
|
|
|
pageX: N.targetTouches[L].pageX,
|
|
|
pageY: N.targetTouches[L].pageY,
|
|
|
target: N.targetTouches[L].target,
|
|
|
identifier: N.targetTouches[L].identifier
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
M.rotation = N.rotation;
|
|
|
M.scale = N.scale;
|
|
|
return M
|
|
|
};
|
|
|
var F = J.lang.Event;
|
|
|
J.lang.decontrol = function(M) {
|
|
|
var L = window[J.guid];
|
|
|
L._instances && (delete L._instances[M])
|
|
|
};
|
|
|
J.event = {};
|
|
|
J.on = J.event.on = function(N, M, L) {
|
|
|
if (!(N = J.g(N))) {
|
|
|
return N
|
|
|
}
|
|
|
M = M.replace(/^on/, "");
|
|
|
if (N.addEventListener) {
|
|
|
N.addEventListener(M, L, false)
|
|
|
} else {
|
|
|
if (N.attachEvent) {
|
|
|
N.attachEvent("on" + M, L)
|
|
|
}
|
|
|
}
|
|
|
return N
|
|
|
};
|
|
|
J.un = J.event.un = function(N, M, L) {
|
|
|
if (!(N = J.g(N))) {
|
|
|
return N
|
|
|
}
|
|
|
M = M.replace(/^on/, "");
|
|
|
if (N.removeEventListener) {
|
|
|
N.removeEventListener(M, L, false)
|
|
|
} else {
|
|
|
if (N.detachEvent) {
|
|
|
N.detachEvent("on" + M, L)
|
|
|
}
|
|
|
}
|
|
|
return N
|
|
|
};
|
|
|
J.dom.hasClass = function(N, M) {
|
|
|
if (!N || !N.className || typeof N.className != "string") {
|
|
|
return false
|
|
|
}
|
|
|
var L = -1;
|
|
|
try {
|
|
|
L = N.className == M || N.className.indexOf(M)
|
|
|
} catch (O) {
|
|
|
return false
|
|
|
}
|
|
|
return L > -1
|
|
|
};
|
|
|
var u = u || {};
|
|
|
u._register = [];
|
|
|
u.register = function(L) {
|
|
|
this._register.push(L)
|
|
|
};
|
|
|
var G = window.BMAP_AUTHENTIC_KEY || "";
|
|
|
u._rd = {};
|
|
|
u.verify = function() {
|
|
|
var L = u.apiUrl + "?qt=verify&ak=" + G;
|
|
|
o.request(L, function(M) {
|
|
|
if (M && M.error !== 0) {
|
|
|
if (typeof map !== "undefined") {
|
|
|
map.getContainer().innerHTML = "";
|
|
|
map.__listeners = {}
|
|
|
}
|
|
|
u = null;
|
|
|
var N =
|
|
|
"百度未授权使用地图API,可能是因为您提供的密钥不是有效的百度LBS开放平台密钥,或此密钥未对本应用的百度地图JavaScriptAPI授权。您可以访问如下网址了解如何获取有效的密钥:http://lbsyun.baidu.com/apiconsole/key#。";
|
|
|
switch (M.error) {
|
|
|
case 101:
|
|
|
N = "开发者禁用了该ak的jsapi服务权限。您可以访问如下网址了解如何获取有效的密钥:http://lbsyun.baidu.com/apiconsole/key#。";
|
|
|
break;
|
|
|
case 102:
|
|
|
N = "开发者Referer不正确。您可以访问如下网址了解如何获取有效的密钥:http://lbsyun.baidu.com/apiconsole/key#。";
|
|
|
break
|
|
|
}
|
|
|
alert(N)
|
|
|
}
|
|
|
})
|
|
|
};
|
|
|
u.copyright = function() {};
|
|
|
window.BMap = u;
|
|
|
u.Map = m;
|
|
|
u.Point = w;
|
|
|
u.Pixel = j;
|
|
|
u.Size = d;
|
|
|
u.Bounds = f;
|
|
|
u.Projection = n;
|
|
|
u.MercatorProjection = r;
|
|
|
u.TileLayer = l;
|
|
|
u.Control = x;
|
|
|
u.ScaleControl = y;
|
|
|
u.ZoomControl = C;
|
|
|
u.CopyrightControl = k;
|
|
|
u.Overlay = E;
|
|
|
u.Marker = z;
|
|
|
u.Icon = h;
|
|
|
u.MassFeature = q;
|
|
|
|
|
|
function m(O, Q) {
|
|
|
O = J.g(O);
|
|
|
if (!O) {
|
|
|
return
|
|
|
}
|
|
|
var P = this;
|
|
|
J.lang.Class.call(P);
|
|
|
P.config = {
|
|
|
useVectorMap: false,
|
|
|
enableDragging: true,
|
|
|
enableDblclickZoom: true,
|
|
|
enablePinchToZoom: true,
|
|
|
enableInertialDragging: true,
|
|
|
minZoom: 4,
|
|
|
maxZoom: 18,
|
|
|
dpr: 2,
|
|
|
tileSize: 256,
|
|
|
fixCenterWhenPinch: false,
|
|
|
fixCenterWhenResize: false,
|
|
|
backgroundColor: "#F5F3F0",
|
|
|
personalUrls: "dd",
|
|
|
mapStyle: null
|
|
|
};
|
|
|
J.extend(P.config, Q || {});
|
|
|
P.projection = new r();
|
|
|
P.container = O;
|
|
|
P._setStyle(O);
|
|
|
O.unselectable = "on";
|
|
|
O.innerHTML = "";
|
|
|
O.appendChild(P._render());
|
|
|
var M = P.getSize();
|
|
|
P.width = M.width;
|
|
|
P.height = M.height;
|
|
|
P.offsetX = 0;
|
|
|
P.offsetY = 0;
|
|
|
P.platform = O.firstChild;
|
|
|
P.preWebkitTransform = "";
|
|
|
P.maskLayer = P.platform.firstChild;
|
|
|
P.maskLayer.style.width = P.width + "px";
|
|
|
P.maskLayer.style.height = P.height + "px";
|
|
|
P._panes = {};
|
|
|
P.centerPoint = new w(0, 0);
|
|
|
P.zoomLevel = 3;
|
|
|
P.lastLevel = -1;
|
|
|
P.defaultZoomLevel = null;
|
|
|
P.defaultCenter = null;
|
|
|
P._checkZoom();
|
|
|
P.temp = {
|
|
|
lastDomMoveTime: 0,
|
|
|
registerIndex: -1
|
|
|
};
|
|
|
for (var N = 0; N < u._register.length; N++) {
|
|
|
u._register[N](P)
|
|
|
}
|
|
|
P.temp.registerIndex = N;
|
|
|
var L = P.config.useVectorMap;
|
|
|
if (L) {
|
|
|
P.vectorLayerMgr = new VectorLayerMgr(P)
|
|
|
} else {
|
|
|
P.rasterLayerMgr = new c(P)
|
|
|
}
|
|
|
P._bind();
|
|
|
p.load("opmb", function() {
|
|
|
P._asyncRegister()
|
|
|
});
|
|
|
O = null;
|
|
|
P.addCopyrightControl()
|
|
|
}
|
|
|
J.lang.inherits(m, J.lang.Class, "Map");
|
|
|
J.extend(m.prototype, {
|
|
|
_render: function() {
|
|
|
var L = document.createElement("div");
|
|
|
L.style.cssText = "position:absolute;overflow:visible;left:0;top:0;z-index:0;";
|
|
|
var M = document.createElement("div");
|
|
|
M.style.cssText = "position:absolute;left:0;top:0;z-index:10;overflow:hidden;";
|
|
|
L.appendChild(M);
|
|
|
return L
|
|
|
},
|
|
|
_setStyle: function(O) {
|
|
|
var N = O.style;
|
|
|
var M = N.cssText;
|
|
|
if (o.getCurrentStyle(O).position != "absolute") {
|
|
|
M += "position: relative; z-index: 0;"
|
|
|
}
|
|
|
var L = this.config.backgroundColor;
|
|
|
M += ("overflow:hidden;background-color:" + L + ";color:#000;text-align:left");
|
|
|
N.cssText = M
|
|
|
},
|
|
|
_bind: function() {
|
|
|
var L = this;
|
|
|
L._watchSize = function() {
|
|
|
var M = L.getSize();
|
|
|
if (L.width !== M.width || L.height !== M.height) {
|
|
|
L.width = M.width;
|
|
|
L.height = M.height;
|
|
|
var O = new d(L.width, L.height);
|
|
|
var P = new F("onbeforeresize");
|
|
|
P.size = O;
|
|
|
L.dispatchEvent(P);
|
|
|
if (!L.config.fixCenterWhenResize) {
|
|
|
L._updateCenterPoint((M.width - L.width) / 2, (M.height - L.height) / 2)
|
|
|
}
|
|
|
L.maskLayer.style.width = L.width + "px";
|
|
|
L.maskLayer.style.height = L.height + "px";
|
|
|
var N = new F("onresize");
|
|
|
N.size = M;
|
|
|
L.dispatchEvent(N)
|
|
|
}
|
|
|
};
|
|
|
L.temp.autoResizeTimer = setInterval(L._watchSize, 1000)
|
|
|
},
|
|
|
_zoomTo: function(N) {
|
|
|
if (!J.lang.isNumber(N)) {
|
|
|
return
|
|
|
}
|
|
|
N = this._getProperZoom(N).zoom;
|
|
|
if (N == this.zoomLevel) {
|
|
|
return
|
|
|
}
|
|
|
var M = this.temp;
|
|
|
if (M.dragAni) {
|
|
|
M.dragAni.stop()
|
|
|
}
|
|
|
this.lastLevel = this.zoomLevel;
|
|
|
this.zoomLevel = N;
|
|
|
var L = new F("onzoomstart");
|
|
|
L.evtSrc = "zoomTo";
|
|
|
this.dispatchEvent(L)
|
|
|
},
|
|
|
setZoom: function(L) {
|
|
|
this._zoomTo(L)
|
|
|
},
|
|
|
zoomIn: function() {
|
|
|
this._zoomTo(this.zoomLevel + 1)
|
|
|
},
|
|
|
zoomOut: function() {
|
|
|
this._zoomTo(this.zoomLevel - 1)
|
|
|
},
|
|
|
setCenter: function(L) {
|
|
|
if (L.equals(this.centerPoint)) {
|
|
|
return
|
|
|
}
|
|
|
this.panTo(L, {
|
|
|
noAnimation: true
|
|
|
})
|
|
|
},
|
|
|
isLoaded: function() {
|
|
|
return !!this.loaded
|
|
|
},
|
|
|
centerAndZoom: function(L, P) {
|
|
|
var O = this;
|
|
|
P = parseInt(P, 10);
|
|
|
if (!(L instanceof w) || !P) {
|
|
|
return
|
|
|
}
|
|
|
L = O.projection.lngLatToMercator(L);
|
|
|
P = O._getProperZoom(P).zoom;
|
|
|
if (L.equals(O.getCenter()) && P === O.getZoom()) {
|
|
|
return
|
|
|
}
|
|
|
O.lastLevel = O.zoomLevel || P;
|
|
|
O.zoomLevel = P;
|
|
|
O.centerPoint = new w(L.lng, L.lat);
|
|
|
O.defaultZoomLevel = O.defaultZoomLevel || O.zoomLevel;
|
|
|
O.defaultCenter = O.defaultCenter || O.centerPoint;
|
|
|
var M = new F("oncenterzoomend");
|
|
|
M.point = new w(L.lng, L.lat);
|
|
|
M.pixel = O.pointToPixel(O.centerPoint);
|
|
|
M.zoom = O.zoomLevel;
|
|
|
O.dispatchEvent(M);
|
|
|
if (!O.loaded) {
|
|
|
var N = new F("onload");
|
|
|
N.point = new w(L.lng, L.lat);
|
|
|
N.pixel = O.pointToPixel(O.centerPoint);
|
|
|
N.zoom = P;
|
|
|
O.dispatchEvent(N)
|
|
|
}
|
|
|
},
|
|
|
reset: function() {
|
|
|
this.centerAndZoom(this.defaultCenter, this.defaultZoomLevel)
|
|
|
},
|
|
|
getContainer: function() {
|
|
|
return this.container
|
|
|
},
|
|
|
getSize: function() {
|
|
|
return new d(this.container.clientWidth, this.container.clientHeight)
|
|
|
},
|
|
|
getCenter: function() {
|
|
|
var L = this.projection.mercatorToLngLat(this.centerPoint);
|
|
|
return L
|
|
|
},
|
|
|
getZoom: function() {
|
|
|
return this.zoomLevel
|
|
|
},
|
|
|
_getProperZoom: function(N) {
|
|
|
var M = this.config.minZoom;
|
|
|
var L = this.config.maxZoom;
|
|
|
var O = false;
|
|
|
if (N < M) {
|
|
|
O = true;
|
|
|
N = M
|
|
|
}
|
|
|
if (N > L) {
|
|
|
O = true;
|
|
|
N = L
|
|
|
}
|
|
|
return {
|
|
|
zoom: N,
|
|
|
exceeded: O
|
|
|
}
|
|
|
},
|
|
|
panTo: function(M, O) {
|
|
|
if (!(M instanceof w) || M.equals(this.centerPoint)) {
|
|
|
return
|
|
|
}
|
|
|
var N = this.pointToPixel(M);
|
|
|
var L = this.width / 2;
|
|
|
var P = this.height / 2;
|
|
|
O = O || {};
|
|
|
if (Math.abs(L - N.x) > this.width || Math.abs(P - N.y) > this.height || O.noAnimation) {
|
|
|
this._panTo(L - N.x, P - N.y)
|
|
|
} else {
|
|
|
this._panBy(L - N.x, P - N.y, {
|
|
|
duration: O.duration
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
_panTo: function(M, L) {
|
|
|
var N = this.temp;
|
|
|
if (N.dragAni) {
|
|
|
N.dragAni.stop()
|
|
|
}
|
|
|
this.dispatchEvent(new F("onmovestart"));
|
|
|
this._setPlatformPosition(this.offsetX + M, this.offsetY + L);
|
|
|
this.dispatchEvent(new F("onmoveend"))
|
|
|
},
|
|
|
panBy: function(M, L, N) {
|
|
|
M = M || 0;
|
|
|
L = L || 0;
|
|
|
N = N || {};
|
|
|
if (Math.abs(M) <= this.width && Math.abs(L) <= this.height && (!N.noAnimation)) {
|
|
|
this._panBy(M, L)
|
|
|
} else {
|
|
|
this._panTo(M, L)
|
|
|
}
|
|
|
},
|
|
|
_panBy: function(N, M, Q) {
|
|
|
var P = this;
|
|
|
Q = Q || {};
|
|
|
this.dispatchEvent(new F("onmovestart"));
|
|
|
var L = P.offsetX;
|
|
|
var R = P.offsetY;
|
|
|
var O = P.temp;
|
|
|
if (O.dragAni) {
|
|
|
O.dragAni.stop()
|
|
|
}
|
|
|
if (O.panAni) {
|
|
|
O.panAni.stop()
|
|
|
}
|
|
|
O.panAni = new v({
|
|
|
fps: Q.fps || 30,
|
|
|
duration: Q.duration || 500,
|
|
|
transition: Q.transition || i.easeInOutQuad,
|
|
|
render: function(S) {
|
|
|
P._setPlatformPosition(L + N * S, R + M * S)
|
|
|
},
|
|
|
finish: function(S) {
|
|
|
P.dispatchEvent(new F("onmoveend"));
|
|
|
P.temp.panAni = null
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
_setPlatformPosition: function(L, M) {
|
|
|
if (isNaN(L) || isNaN(M)) {
|
|
|
return
|
|
|
}
|
|
|
if (this.offsetX == L && this.offsetY == M) {
|
|
|
return
|
|
|
}
|
|
|
this._updateCenterPoint(this.offsetX - L, this.offsetY - M);
|
|
|
this.offsetX = L;
|
|
|
this.offsetY = M;
|
|
|
o.css3TransformDom(this.platform, L, M);
|
|
|
o.css3TransformDom(this.maskLayer, -L, -M);
|
|
|
this.dispatchEvent(new F("onmoving"))
|
|
|
},
|
|
|
_updateCenterPoint: function(M, L) {
|
|
|
var N = this.getZoomUnits(this.zoomLevel);
|
|
|
var O = this.centerPoint;
|
|
|
this.centerPoint = new w(O.lng + M * N, O.lat - L * N)
|
|
|
},
|
|
|
getZoomUnits: function(L) {
|
|
|
return Math.pow(2, (this.config.maxZoom - L))
|
|
|
},
|
|
|
getTileUnits: function(L) {
|
|
|
return this.getZoomUnits(L) * this.config.tileSize
|
|
|
},
|
|
|
pointToPixel: function(M, P) {
|
|
|
if (!M) {
|
|
|
return
|
|
|
}
|
|
|
M = this.projection.lngLatToMercator(M);
|
|
|
P = P || {};
|
|
|
var O = P.zoom || this.zoomLevel;
|
|
|
var S = P.centerPoint || this.centerPoint;
|
|
|
var Q = P.basePoint || new j(this.width / 2, this.height / 2);
|
|
|
var N = this.getZoomUnits(O);
|
|
|
var L = (M.lng - S.lng) / N + Q.x;
|
|
|
var R = (S.lat - M.lat) / N + Q.y;
|
|
|
return new j(L, R)
|
|
|
},
|
|
|
pixelToPoint: function(N, M) {
|
|
|
if (!N) {
|
|
|
return
|
|
|
}
|
|
|
M = M || {};
|
|
|
var T = M.zoom || this.zoomLevel;
|
|
|
var O = M.centerPoint || this.centerPoint;
|
|
|
var L = M.basePoint || new j(this.width / 2, this.height / 2);
|
|
|
var S = this.getZoomUnits(T);
|
|
|
var Q = O.lng + S * (N.x - L.x);
|
|
|
var P = O.lat - S * (N.y - L.y);
|
|
|
var R = new w(Q, P);
|
|
|
R = this.projection.mercatorToLngLat(R);
|
|
|
return R
|
|
|
},
|
|
|
pointToOverlayPixel: function(L, N) {
|
|
|
if (!L) {
|
|
|
return
|
|
|
}
|
|
|
var M = this.pointToPixel(L, N);
|
|
|
M.x -= this.offsetX;
|
|
|
M.y -= this.offsetY;
|
|
|
return M
|
|
|
},
|
|
|
overlayPixelToPoint: function(L, N) {
|
|
|
if (!L) {
|
|
|
return
|
|
|
}
|
|
|
var M = new j(L.x, L.y);
|
|
|
M.x += this.offsetX;
|
|
|
M.y += this.offsetY;
|
|
|
return this.pixelToPoint(M, N)
|
|
|
},
|
|
|
getBounds: function() {
|
|
|
if (!this.isLoaded()) {
|
|
|
return new f()
|
|
|
}
|
|
|
var M = new j(0, this.height);
|
|
|
var L = new j(this.width, 0);
|
|
|
var O = this.pixelToPoint(M);
|
|
|
var N = this.pixelToPoint(L);
|
|
|
return new f(O, N)
|
|
|
},
|
|
|
_getBestLevel: function(M, N) {
|
|
|
var Q = N.margins || [10, 10, 10, 10];
|
|
|
var R = Q[1] + Q[3];
|
|
|
var P = Q[0] + Q[2];
|
|
|
var L = this.config.minZoom;
|
|
|
var T = this.config.maxZoom;
|
|
|
for (var O = T; O >= L; O--) {
|
|
|
var S = this.getZoomUnits(O);
|
|
|
if (M.toSpan().lng / S < this.width - R && M.toSpan().lat / S < this.height - P) {
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
if (O < L) {
|
|
|
O = L
|
|
|
}
|
|
|
if (O > T) {
|
|
|
O = T
|
|
|
}
|
|
|
return O
|
|
|
},
|
|
|
getViewport: function(U, M) {
|
|
|
var Y = {
|
|
|
center: this.getCenter(),
|
|
|
zoom: this.getZoom()
|
|
|
};
|
|
|
if (!U || !U instanceof f && U.length == 0 || U instanceof f && U.isEmpty()) {
|
|
|
return Y
|
|
|
}
|
|
|
var W = [];
|
|
|
if (U instanceof f) {
|
|
|
W.push(U.getNorthEast());
|
|
|
W.push(U.getSouthWest())
|
|
|
} else {
|
|
|
W = U.slice(0)
|
|
|
}
|
|
|
M = M || {};
|
|
|
var Q = [];
|
|
|
for (var R = 0, P = W.length; R < P; R++) {
|
|
|
Q.push(this.projection.lngLatToMercator(W[R]))
|
|
|
}
|
|
|
var N = new f();
|
|
|
for (var R = Q.length - 1; R >= 0; R--) {
|
|
|
N.extend(Q[R])
|
|
|
}
|
|
|
if (N.isEmpty()) {
|
|
|
return Y
|
|
|
}
|
|
|
var L = N.getCenter();
|
|
|
var X = this._getBestLevel(N, M);
|
|
|
if (M.margins) {
|
|
|
var T = M.margins;
|
|
|
var S = (T[1] - T[3]) / 2;
|
|
|
var V = (T[0] - T[2]) / 2;
|
|
|
var O = this.getZoomUnits(X);
|
|
|
L.lng = L.lng + O * S;
|
|
|
L.lat = L.lat + O * V
|
|
|
}
|
|
|
L = this.projection.mercatorToLngLat(L);
|
|
|
return {
|
|
|
center: L,
|
|
|
zoom: X
|
|
|
}
|
|
|
},
|
|
|
setViewport: function(M, N) {
|
|
|
var L;
|
|
|
if (M && M.center) {
|
|
|
L = M
|
|
|
} else {
|
|
|
L = this.getViewport(M, N)
|
|
|
}
|
|
|
N = N || {};
|
|
|
if (L.zoom == this.zoomLevel && N.enableAnimation !== false) {
|
|
|
this.panTo(L.center, {
|
|
|
duration: 210
|
|
|
})
|
|
|
} else {
|
|
|
this.centerAndZoom(L.center, L.zoom)
|
|
|
}
|
|
|
},
|
|
|
getPanes: function() {
|
|
|
return this._panes
|
|
|
},
|
|
|
getOverlays: function() {
|
|
|
var O = [];
|
|
|
var P = this._overlays;
|
|
|
var N = this._customOverlays;
|
|
|
if (P) {
|
|
|
for (var M in P) {
|
|
|
if (P[M] instanceof I) {
|
|
|
O.push(P[M])
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (N) {
|
|
|
for (var M = 0, L = N.length; M < L; M++) {
|
|
|
O.push(N[M])
|
|
|
}
|
|
|
}
|
|
|
return O
|
|
|
},
|
|
|
_asyncRegister: function() {
|
|
|
for (var M = this.temp.registerIndex, L = u._register.length; M < L; M++) {
|
|
|
u._register[M](this)
|
|
|
}
|
|
|
this.temp.registerIndex = M
|
|
|
},
|
|
|
_checkZoom: function() {
|
|
|
var L = this.config;
|
|
|
if (L.minZoom < 3) {
|
|
|
L.minZoom = 3
|
|
|
}
|
|
|
if (L.maxZoom > 18) {
|
|
|
L.maxZoom = 18
|
|
|
}
|
|
|
},
|
|
|
addControl: function(L) {
|
|
|
if (L && J.lang.isFunction(L._i)) {
|
|
|
L._i(this);
|
|
|
this.dispatchEvent(new F("onaddcontrol", L))
|
|
|
}
|
|
|
},
|
|
|
removeControl: function(L) {
|
|
|
if (L && J.lang.isFunction(L.remove)) {
|
|
|
L.remove();
|
|
|
this.dispatchEvent(new F("onremovecontrol", L))
|
|
|
}
|
|
|
},
|
|
|
addOverlay: function(L) {
|
|
|
if (L && J.lang.isFunction(L._i)) {
|
|
|
L._i(this);
|
|
|
this.dispatchEvent(new F("onaddoverlay", L))
|
|
|
}
|
|
|
},
|
|
|
removeOverlay: function(L) {
|
|
|
if (L && J.lang.isFunction(L.remove)) {
|
|
|
L.remove();
|
|
|
this.dispatchEvent(new F("onremoveoverlay", L))
|
|
|
}
|
|
|
},
|
|
|
clearOverlays: function() {
|
|
|
this.dispatchEvent(new F("onclearoverlays"))
|
|
|
},
|
|
|
addMassFeatures: function(M) {
|
|
|
var L = new F("onaddmassfeatures");
|
|
|
L.massFeatures = M;
|
|
|
this.dispatchEvent(L)
|
|
|
},
|
|
|
removeMassFeatures: function(M) {
|
|
|
var L = new F("onremovemassfeatures");
|
|
|
L.massFeatures = M;
|
|
|
this.dispatchEvent(L)
|
|
|
},
|
|
|
clearMassFeatures: function() {
|
|
|
var L = new F("onclearmassfeatures");
|
|
|
this.dispatchEvent(L)
|
|
|
},
|
|
|
addTileLayer: function(L) {
|
|
|
if (L) {
|
|
|
this.dispatchEvent(new F("onaddtilelayer", L))
|
|
|
}
|
|
|
},
|
|
|
removeTileLayer: function(L) {
|
|
|
if (L) {
|
|
|
this.dispatchEvent(new F("onremovetilelayer", L))
|
|
|
}
|
|
|
},
|
|
|
enableDragging: function() {
|
|
|
this.config.enableDragging = true
|
|
|
},
|
|
|
disableDragging: function() {
|
|
|
this.config.enableDragging = false
|
|
|
},
|
|
|
enableInertialDragging: function() {
|
|
|
this.config.enableInertialDragging = true
|
|
|
},
|
|
|
disableInertialDragging: function() {
|
|
|
this.config.enableInertialDragging = false
|
|
|
},
|
|
|
enableDoubleClickZoom: function() {
|
|
|
this.config.enableDblclickZoom = true
|
|
|
},
|
|
|
disableDoubleClickZoom: function() {
|
|
|
this.config.enableDblclickZoom = false
|
|
|
},
|
|
|
enablePinchToZoom: function() {
|
|
|
this.config.enablePinchToZoom = true
|
|
|
},
|
|
|
disablePinchToZoom: function() {
|
|
|
this.config.enablePinchToZoom = false
|
|
|
},
|
|
|
addCopyrightControl: function() {
|
|
|
var L = new k();
|
|
|
this.addControl(L)
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function f(L, M) {
|
|
|
if (L && !M) {
|
|
|
M = L
|
|
|
}
|
|
|
this._sw = this._ne = null;
|
|
|
this._swLng = this._swLat = null;
|
|
|
this._neLng = this._neLat = null;
|
|
|
if (L) {
|
|
|
this._sw = new w(L.lng, L.lat);
|
|
|
this._ne = new w(M.lng, M.lat);
|
|
|
this._swLng = L.lng;
|
|
|
this._swLat = L.lat;
|
|
|
this._neLng = M.lng;
|
|
|
this._neLat = M.lat
|
|
|
}
|
|
|
}
|
|
|
J.object.extend(f.prototype, {
|
|
|
isEmpty: function() {
|
|
|
return !this._sw || !this._ne
|
|
|
},
|
|
|
equals: function(L) {
|
|
|
if (!(L instanceof f) || this.isEmpty()) {
|
|
|
return false
|
|
|
}
|
|
|
return this.getSouthWest().equals(L.getSouthWest()) && this.getNorthEast().equals(L.getNorthEast())
|
|
|
},
|
|
|
getSouthWest: function() {
|
|
|
return this._sw
|
|
|
},
|
|
|
getNorthEast: function() {
|
|
|
return this._ne
|
|
|
},
|
|
|
getCenter: function() {
|
|
|
if (this.isEmpty()) {
|
|
|
return null
|
|
|
}
|
|
|
return new w((this._swLng + this._neLng) / 2, (this._swLat + this._neLat) / 2)
|
|
|
},
|
|
|
extend: function(L) {
|
|
|
if (!(L instanceof w)) {
|
|
|
return
|
|
|
}
|
|
|
var M = L.lng,
|
|
|
N = L.lat;
|
|
|
if (!this._sw) {
|
|
|
this._sw = new w(0, 0)
|
|
|
}
|
|
|
if (!this._ne) {
|
|
|
this._ne = new w(0, 0)
|
|
|
}
|
|
|
if (!this._swLng || this._swLng > M) {
|
|
|
this._sw.lng = this._swLng = M
|
|
|
}
|
|
|
if (!this._neLng || this._neLng < M) {
|
|
|
this._ne.lng = this._neLng = M
|
|
|
}
|
|
|
if (!this._swLat || this._swLat > N) {
|
|
|
this._sw.lat = this._swLat = N
|
|
|
}
|
|
|
if (!this._neLat || this._neLat < N) {
|
|
|
this._ne.lat = this._neLat = N
|
|
|
}
|
|
|
},
|
|
|
toSpan: function() {
|
|
|
if (this.isEmpty()) {
|
|
|
return new w(0, 0)
|
|
|
}
|
|
|
return new w(Math.abs(this._neLng - this._swLng), Math.abs(this._neLat - this._swLat))
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function w(L, M) {
|
|
|
this.lng = parseFloat(L);
|
|
|
this.lat = parseFloat(M)
|
|
|
}
|
|
|
w.prototype.equals = function(L) {
|
|
|
return L && this.lat == L.lat && this.lng == L.lng
|
|
|
};
|
|
|
|
|
|
function n() {}
|
|
|
n.prototype.lngLatToPoint = function() {};
|
|
|
n.prototype.pointToLngLat = function() {};
|
|
|
|
|
|
function r() {}
|
|
|
J.extend(r, {
|
|
|
EARTHRADIUS: 6370996.81,
|
|
|
MCBAND: [12890594.86, 8362377.87, 5591021, 3481989.83, 1678043.12, 0],
|
|
|
LLBAND: [75, 60, 45, 30, 15, 0],
|
|
|
MC2LL: [
|
|
|
[1.410526172116255e-8, 0.00000898305509648872, -1.9939833816331, 200.9824383106796, -187.2403703815547,
|
|
|
91.6087516669843, -23.38765649603339, 2.57121317296198, -0.03801003308653, 17337981.2
|
|
|
],
|
|
|
[-7.435856389565537e-9, 0.000008983055097726239, -0.78625201886289, 96.32687599759846, -1.85204757529826, -
|
|
|
59.36935905485877, 47.40033549296737, -16.50741931063887, 2.28786674699375, 10260144.86
|
|
|
],
|
|
|
[-3.030883460898826e-8, 0.00000898305509983578, 0.30071316287616, 59.74293618442277, 7.357984074871, -
|
|
|
25.38371002664745, 13.45380521110908, -3.29883767235584, 0.32710905363475, 6856817.37
|
|
|
],
|
|
|
[-1.981981304930552e-8, 0.000008983055099779535, 0.03278182852591, 40.31678527705744, 0.65659298677277, -
|
|
|
4.44255534477492, 0.85341911805263, 0.12923347998204, -0.04625736007561, 4482777.06
|
|
|
],
|
|
|
[3.09191371068437e-9, 0.000008983055096812155, 0.00006995724062, 23.10934304144901, -0.00023663490511, -
|
|
|
0.6321817810242, -0.00663494467273, 0.03430082397953, -0.00466043876332, 2555164.4
|
|
|
],
|
|
|
[2.890871144776878e-9, 0.000008983055095805407, -3.068298e-8, 7.47137025468032, -0.00000353937994, -
|
|
|
0.02145144861037, -0.00001234426596, 0.00010322952773, -0.00000323890364, 826088.5
|
|
|
]
|
|
|
],
|
|
|
LL2MC: [
|
|
|
[-0.0015702102444, 111320.7020616939, 1704480524535203, -10338987376042340, 26112667856603880, -
|
|
|
35149669176653700, 26595700718403920, -10725012454188240, 1800819912950474, 82.5
|
|
|
],
|
|
|
[0.0008277824516172526, 111320.7020463578, 647795574.6671607, -4082003173.641316, 10774905663.51142, -
|
|
|
15171875531.51559, 12053065338.62167, -5124939663.577472, 913311935.9512032, 67.5
|
|
|
],
|
|
|
[0.00337398766765, 111320.7020202162, 4481351.045890365, -23393751.19931662, 79682215.47186455, -
|
|
|
115964993.2797253, 97236711.15602145, -43661946.33752821, 8477230.501135234, 52.5
|
|
|
],
|
|
|
[0.00220636496208, 111320.7020209128, 51751.86112841131, 3796837.749470245, 992013.7397791013, -
|
|
|
1221952.21711287, 1340652.697009075, -620943.6990984312, 144416.9293806241, 37.5
|
|
|
],
|
|
|
[-0.0003441963504368392, 111320.7020576856, 278.2353980772752, 2485758.690035394, 6070.750963243378,
|
|
|
54821.18345352118, 9540.606633304236, -2710.55326746645, 1405.483844121726, 22.5
|
|
|
],
|
|
|
[-0.0003218135878613132, 111320.7020701615, 0.00369383431289, 823725.6402795718, 0.46104986909093,
|
|
|
2351.343141331292, 1.58060784298199, 8.77738589078284, 0.37238884252424, 7.45
|
|
|
]
|
|
|
],
|
|
|
getDistanceByMC: function(Q, O) {
|
|
|
if (!Q || !O) {
|
|
|
return 0
|
|
|
}
|
|
|
var M;
|
|
|
var P;
|
|
|
var L;
|
|
|
var N;
|
|
|
Q = this.convertMC2LL(Q);
|
|
|
if (!Q) {
|
|
|
return 0
|
|
|
}
|
|
|
M = this.toRadians(Q.lng);
|
|
|
P = this.toRadians(Q.lat);
|
|
|
O = this.convertMC2LL(O);
|
|
|
if (!O) {
|
|
|
return 0
|
|
|
}
|
|
|
L = this.toRadians(O.lng);
|
|
|
N = this.toRadians(O.lat);
|
|
|
return this.getDistance(M, L, P, N)
|
|
|
},
|
|
|
getDistanceByLL: function(Q, O) {
|
|
|
if (!Q || !O) {
|
|
|
return 0
|
|
|
}
|
|
|
Q.lng = this.getLoop(Q.lng, -180, 180);
|
|
|
Q.lat = this.getRange(Q.lat, -74, 74);
|
|
|
O.lng = this.getLoop(O.lng, -180, 180);
|
|
|
O.lat = this.getRange(O.lat, -74, 74);
|
|
|
var M;
|
|
|
var L;
|
|
|
var P;
|
|
|
var N;
|
|
|
M = this.toRadians(Q.lng);
|
|
|
P = this.toRadians(Q.lat);
|
|
|
L = this.toRadians(O.lng);
|
|
|
N = this.toRadians(O.lat);
|
|
|
return this.getDistance(M, L, P, N)
|
|
|
},
|
|
|
convertMC2LL: function(M) {
|
|
|
if (M === null || M === undefined) {
|
|
|
return new w(0, 0)
|
|
|
}
|
|
|
var N;
|
|
|
var P;
|
|
|
N = new w(Math.abs(M.lng), Math.abs(M.lat));
|
|
|
for (var O = 0; O < this.MCBAND.length; O++) {
|
|
|
if (N.lat >= this.MCBAND[O]) {
|
|
|
P = this.MC2LL[O];
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
var L = this.convertor(M, P);
|
|
|
var M = new w(L.lng.toFixed(6), L.lat.toFixed(6));
|
|
|
return M
|
|
|
},
|
|
|
convertLL2MC: function(L) {
|
|
|
if (L === null || L === undefined) {
|
|
|
return new w(0, 0)
|
|
|
}
|
|
|
if (L.lng > 180 || L.lng < -180 || L.lat > 90 || L.lat < -90) {
|
|
|
return new w(0, 0)
|
|
|
}
|
|
|
var M;
|
|
|
var O;
|
|
|
L.lng = this.getLoop(L.lng, -180, 180);
|
|
|
L.lat = this.getRange(L.lat, -74, 74);
|
|
|
M = new w(L.lng, L.lat);
|
|
|
for (var N = 0; N < this.LLBAND.length; N++) {
|
|
|
if (M.lat >= this.LLBAND[N]) {
|
|
|
O = this.LL2MC[N];
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
if (!O) {
|
|
|
for (var N = 0; N < this.LLBAND.length; N++) {
|
|
|
if (M.lat <= -this.LLBAND[N]) {
|
|
|
O = this.LL2MC[N];
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var P = this.convertor(L, O);
|
|
|
var L = new w(P.lng.toFixed(2), P.lat.toFixed(2));
|
|
|
return L
|
|
|
},
|
|
|
convertor: function(N, O) {
|
|
|
if (!N || !O) {
|
|
|
return
|
|
|
}
|
|
|
var L = O[0] + O[1] * Math.abs(N.lng);
|
|
|
var M = Math.abs(N.lat) / O[9];
|
|
|
var P = O[2] + O[3] * M + O[4] * M * M + O[5] * M * M * M + O[6] * M * M * M * M + O[7] * M * M * M * M * M +
|
|
|
O[8] * M * M * M * M * M * M;
|
|
|
L *= (N.lng < 0 ? -1 : 1);
|
|
|
P *= (N.lat < 0 ? -1 : 1);
|
|
|
return new w(L, P)
|
|
|
},
|
|
|
getDistance: function(M, L, O, N) {
|
|
|
return this.EARTHRADIUS * Math.acos((Math.sin(O) * Math.sin(N) + Math.cos(O) * Math.cos(N) * Math.cos(L - M)))
|
|
|
},
|
|
|
toRadians: function(L) {
|
|
|
return Math.PI * L / 180
|
|
|
},
|
|
|
toDegrees: function(L) {
|
|
|
return (180 * L) / Math.PI
|
|
|
},
|
|
|
getRange: function(N, M, L) {
|
|
|
if (M != null) {
|
|
|
N = Math.max(N, M)
|
|
|
}
|
|
|
if (L != null) {
|
|
|
N = Math.min(N, L)
|
|
|
}
|
|
|
return N
|
|
|
},
|
|
|
getLoop: function(N, M, L) {
|
|
|
while (N > L) {
|
|
|
N -= L - M
|
|
|
}
|
|
|
while (N < M) {
|
|
|
N += L - M
|
|
|
}
|
|
|
return N
|
|
|
}
|
|
|
});
|
|
|
J.extend(r.prototype, {
|
|
|
lngLatToMercator: function(L) {
|
|
|
return r.convertLL2MC(L)
|
|
|
},
|
|
|
lngLatToPoint: function(L) {
|
|
|
var M = r.convertLL2MC(L);
|
|
|
return new j(M.lng, M.lat)
|
|
|
},
|
|
|
mercatorToLngLat: function(L) {
|
|
|
return r.convertMC2LL(L)
|
|
|
},
|
|
|
pointToLngLat: function(L) {
|
|
|
var M = new w(L.x, L.y);
|
|
|
return r.convertMC2LL(M)
|
|
|
},
|
|
|
pointToPixel: function(M, Q, P, O, R) {
|
|
|
if (!M) {
|
|
|
return
|
|
|
}
|
|
|
M = this.lngLatToMercator(M, R);
|
|
|
var N = this.getZoomUnits(Q);
|
|
|
var L = Math.round((M.lng - P.lng) / N + O.width / 2);
|
|
|
var S = Math.round((P.lat - M.lat) / N + O.height / 2);
|
|
|
return new j(L, S)
|
|
|
},
|
|
|
pixelToPoint: function(L, T, P, N, M) {
|
|
|
if (!L) {
|
|
|
return
|
|
|
}
|
|
|
var S = this.getZoomUnits(T);
|
|
|
var Q = P.lng + S * (L.x - N.width / 2);
|
|
|
var O = P.lat - S * (L.y - N.height / 2);
|
|
|
var R = new w(Q, O);
|
|
|
return this.mercatorToLngLat(R, M)
|
|
|
},
|
|
|
getZoomUnits: function(L) {
|
|
|
return Math.pow(2, (18 - L))
|
|
|
}
|
|
|
});
|
|
|
u.httpUrl = {
|
|
|
TILE_ONLINE_URLS: ["online0.map.bdimg.com", "online1.map.bdimg.com", "online2.map.bdimg.com",
|
|
|
"online3.map.bdimg.com", "online4.map.bdimg.com"
|
|
|
],
|
|
|
baidumap: "map.baidu.com",
|
|
|
main_domain_nocdn: {
|
|
|
baidu: "api.map.baidu.com"
|
|
|
},
|
|
|
main_domain_cdn: {
|
|
|
other: ["api.map.baidu.com"],
|
|
|
baidu: ["api0.map.bdimg.com", "api1.map.bdimg.com", "api2.map.bdimg.com"]
|
|
|
}
|
|
|
};
|
|
|
u.httpsUrl = {
|
|
|
TILE_ONLINE_URLS: ["gss0.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv",
|
|
|
"gss0.bdstatic.com/8bo_dTSlRMgBo1vgoIiO_jowehsv", "gss0.bdstatic.com/8bo_dTSlRcgBo1vgoIiO_jowehsv",
|
|
|
"gss0.bdstatic.com/8bo_dTSlRsgBo1vgoIiO_jowehsv", "gss0.bdstatic.com/8bo_dTSlQ1gBo1vgoIiO_jowehsv"
|
|
|
],
|
|
|
baidumap: "gsp0.baidu.com/80MWsjip0QIZ8tyhnq",
|
|
|
main_domain_nocdn: {
|
|
|
baidu: "gsp0.baidu.com/9_Q4sjOpB1gCo2Kml5_Y_D3",
|
|
|
other: "api.map.baidu.com"
|
|
|
},
|
|
|
main_domain_cdn: {
|
|
|
other: "api.map.baidu.com",
|
|
|
baidu: ["gss0.bdstatic.com/9_Q4vHSd2RZ3otebn9fN2DJv", "gss0.baidu.com/9_Q4vXSd2RZ3otebn9fN2DJv",
|
|
|
"gss0.bdstatic.com/9_Q4vnSd2RZ3otebn9fN2DJv"
|
|
|
]
|
|
|
}
|
|
|
};
|
|
|
u.urlType = {
|
|
|
"0": {
|
|
|
proto: "http://",
|
|
|
domain: u.httpUrl
|
|
|
},
|
|
|
"1": {
|
|
|
proto: "https://",
|
|
|
domain: u.httpsUrl
|
|
|
},
|
|
|
"2": {
|
|
|
proto: "https://",
|
|
|
domain: u.httpsUrl
|
|
|
}
|
|
|
};
|
|
|
if (window.BMAP_PROTOCOL && window.BMAP_PROTOCOL === "https") {
|
|
|
window.HOST_TYPE = 2
|
|
|
}
|
|
|
u.urlStr = window.HOST_TYPE || "0";
|
|
|
u.url = u.urlType[u.urlStr];
|
|
|
u.mapUrl = u.url.proto + u.url.domain["baidumap"] + "/";
|
|
|
u.apiUrl = u.url.proto + (u.urlStr == "2" ? u.url.domain["main_domain_nocdn"]["other"] : u.url.domain[
|
|
|
"main_domain_nocdn"]["baidu"]) + "/";
|
|
|
u.apiUrlCdn = u.url.proto + (u.urlStr == "2" ? u.url.domain["main_domain_cdn"]["other"] : u.url.domain[
|
|
|
"main_domain_cdn"]["baidu"][0]) + "/";
|
|
|
var o = {
|
|
|
setPosition: function(N, L) {
|
|
|
var M = N.style;
|
|
|
M.left = L[0] + "px";
|
|
|
M.top = L[1] + "px"
|
|
|
},
|
|
|
setUnSelectable: function(L) {
|
|
|
L.style.MozUserSelect = "none"
|
|
|
},
|
|
|
isInDocument: function(L) {
|
|
|
return L && L.parentNode && L.parentNode.nodeType != 11
|
|
|
},
|
|
|
beforeEndHTML: function(M, L) {
|
|
|
J.dom.insertHTML(M, "beforeEnd", L);
|
|
|
return M.lastChild
|
|
|
},
|
|
|
getPosition: function(L) {
|
|
|
var M = {
|
|
|
left: 0,
|
|
|
top: 0
|
|
|
};
|
|
|
while (L && L.offsetParent) {
|
|
|
M.left += L.offsetLeft;
|
|
|
M.top += L.offsetTop;
|
|
|
L = L.offsetParent
|
|
|
}
|
|
|
return M
|
|
|
},
|
|
|
stopBubble: function(L) {
|
|
|
var L = window.event || L;
|
|
|
L.stopPropagation ? L.stopPropagation() : L.cancelBubble = true
|
|
|
},
|
|
|
preventDefault: function(L) {
|
|
|
var L = window.event || L;
|
|
|
L.preventDefault ? L.preventDefault() : L.returnValue = false;
|
|
|
return false
|
|
|
},
|
|
|
stopAndPrevent: function(L) {
|
|
|
this.stopBubble(L);
|
|
|
return this.preventDefault(L)
|
|
|
},
|
|
|
getScroll: function() {
|
|
|
var L = document.documentElement,
|
|
|
M = document.body;
|
|
|
if (L && (L.scrollTop || L.scrollLeft)) {
|
|
|
return [L.scrollTop, L.scrollLeft]
|
|
|
} else {
|
|
|
if (M) {
|
|
|
return [M.scrollTop, M.scrollLeft]
|
|
|
} else {
|
|
|
return [0, 0]
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
getDistanceByPixel: function(M, L) {
|
|
|
if (!M || !L) {
|
|
|
return
|
|
|
}
|
|
|
return Math.round(Math.sqrt(Math.pow(M.x - L.x, 2) + Math.pow(M.y - L.y, 2)))
|
|
|
},
|
|
|
create: function(M, L, N) {
|
|
|
var O = document.createElement(M);
|
|
|
if (N) {
|
|
|
O = document.createElementNS(N, M)
|
|
|
}
|
|
|
return J.dom.setAttrs(O, L || {})
|
|
|
},
|
|
|
getCurrentStyle: function(L) {
|
|
|
if (L.currentStyle) {
|
|
|
return L.currentStyle
|
|
|
} else {
|
|
|
if (L.ownerDocument && L.ownerDocument.defaultView) {
|
|
|
return L.ownerDocument.defaultView.getComputedStyle(L, null)
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
isDefined: function(L) {
|
|
|
return typeof L != "undefined"
|
|
|
},
|
|
|
isSupportCanvas: function() {
|
|
|
if (typeof this.isSupportCanvas.result != "boolean") {
|
|
|
this.isSupportCanvas.result = !!this.create("canvas").getContext
|
|
|
}
|
|
|
return this.isSupportCanvas.result
|
|
|
},
|
|
|
getCurrentTime: function() {
|
|
|
return (new Date).getTime()
|
|
|
},
|
|
|
isAndroid23More: function() {
|
|
|
if (J.platform.isAndroid && parseFloat(J.platform.android) > 2.3) {
|
|
|
return true
|
|
|
}
|
|
|
return false
|
|
|
},
|
|
|
canUseTranslate3d: function() {
|
|
|
if (typeof this.canUseTranslate3d.result !== "boolean") {
|
|
|
this.canUseTranslate3d.result = o.isAndroid23More() || J.platform.isIphone
|
|
|
}
|
|
|
return this.canUseTranslate3d.result
|
|
|
},
|
|
|
css3TransformDom: function(P, M, Q, O) {
|
|
|
var L = "";
|
|
|
if (O !== undefined) {
|
|
|
L = " scale(" + O + ")"
|
|
|
}
|
|
|
var N = "";
|
|
|
if (this.canUseTranslate3d()) {
|
|
|
N = "translate3d(" + M + "px," + Q + "px,0px)"
|
|
|
} else {
|
|
|
N = "translate(" + M + "px," + Q + "px)"
|
|
|
}
|
|
|
P.style.WebkitTransform = N + L
|
|
|
},
|
|
|
request: function(O, L) {
|
|
|
if (L) {
|
|
|
var N = (Math.random() * 100000).toFixed(0);
|
|
|
u._rd["_cbk" + N] = function(P) {
|
|
|
L && L(P);
|
|
|
delete u._rd["_cbk" + N]
|
|
|
};
|
|
|
O += "&callback=BMap._rd._cbk" + N
|
|
|
}
|
|
|
var M = this.create("script", {
|
|
|
src: O,
|
|
|
type: "text/javascript",
|
|
|
charset: "utf-8"
|
|
|
});
|
|
|
M.addEventListener("load", function(Q) {
|
|
|
var P = Q.target;
|
|
|
P.parentNode.removeChild(P)
|
|
|
}, false);
|
|
|
document.getElementsByTagName("head")[0].appendChild(M);
|
|
|
M = null
|
|
|
}
|
|
|
};
|
|
|
|
|
|
function v(O) {
|
|
|
var L = {
|
|
|
duration: 1000,
|
|
|
fps: 30,
|
|
|
delay: 0,
|
|
|
transition: i.linear,
|
|
|
onStop: function() {}
|
|
|
};
|
|
|
this._anis = [];
|
|
|
if (O) {
|
|
|
for (var M in O) {
|
|
|
L[M] = O[M]
|
|
|
}
|
|
|
}
|
|
|
this._opts = L;
|
|
|
if (J.lang.isNumber(L.delay)) {
|
|
|
var N = this;
|
|
|
setTimeout(function() {
|
|
|
N.start()
|
|
|
}, L.delay)
|
|
|
} else {
|
|
|
if (L.delay != v.INFINITE) {
|
|
|
this.start()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
v.INFINITE = "INFINITE";
|
|
|
v.prototype.start = function() {
|
|
|
if (window.requestAnimationFrame) {
|
|
|
var L = this;
|
|
|
L._timer = window.requestAnimationFrame(function(M) {
|
|
|
L._loop(M)
|
|
|
})
|
|
|
} else {
|
|
|
this._beginTime = o.getCurrentTime();
|
|
|
this._endTime = this._beginTime + this._opts.duration;
|
|
|
this._loop()
|
|
|
}
|
|
|
};
|
|
|
v.prototype._loop = function() {
|
|
|
var M = this;
|
|
|
var L = o.getCurrentTime();
|
|
|
if (!this._beginTime) {
|
|
|
this._beginTime = L;
|
|
|
this._endTime = this._beginTime + this._opts.duration
|
|
|
}
|
|
|
if (L >= M._endTime) {
|
|
|
if (J.lang.isFunction(M._opts.render)) {
|
|
|
M._opts.render(M._opts.transition(1))
|
|
|
}
|
|
|
if (J.lang.isFunction(M._opts.finish)) {
|
|
|
M._opts.finish()
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
M.schedule = M._opts.transition((L - M._beginTime) / M._opts.duration);
|
|
|
if (J.lang.isFunction(M._opts.render)) {
|
|
|
M._opts.render(M.schedule)
|
|
|
}
|
|
|
if (!M.terminative) {
|
|
|
if (window.requestAnimationFrame) {
|
|
|
M._timer = requestAnimationFrame(function(N) {
|
|
|
M._loop(N)
|
|
|
})
|
|
|
} else {
|
|
|
M._timer = setTimeout(function() {
|
|
|
M._loop()
|
|
|
}, 1000 / M._opts.fps)
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
v.prototype.stop = function(M) {
|
|
|
this.terminative = true;
|
|
|
for (var L = 0; L < this._anis.length; L++) {
|
|
|
this._anis[L].stop();
|
|
|
this._anis[L] = null
|
|
|
}
|
|
|
this._anis.length = 0;
|
|
|
if (this._timer) {
|
|
|
if (window.cancelAnimationFrame) {
|
|
|
cancelAnimationFrame(this._timer)
|
|
|
} else {
|
|
|
clearTimeout(this._timer)
|
|
|
}
|
|
|
this._timer = null
|
|
|
}
|
|
|
this._opts.onStop(this.schedule);
|
|
|
if (M) {
|
|
|
this._endTime = this._beginTime;
|
|
|
this._loop()
|
|
|
}
|
|
|
};
|
|
|
var i = {
|
|
|
linear: function(L) {
|
|
|
return L
|
|
|
},
|
|
|
reverse: function(L) {
|
|
|
return 1 - L
|
|
|
},
|
|
|
easeInQuad: function(L) {
|
|
|
return L * L
|
|
|
},
|
|
|
easeInCubic: function(L) {
|
|
|
return Math.pow(L, 3)
|
|
|
},
|
|
|
easeOutQuad: function(L) {
|
|
|
return -(L * (L - 2))
|
|
|
},
|
|
|
easeOutCubic: function(L) {
|
|
|
return Math.pow((L - 1), 3) + 1
|
|
|
},
|
|
|
easeInOutQuad: function(L) {
|
|
|
if (L < 0.5) {
|
|
|
return L * L * 2
|
|
|
} else {
|
|
|
return -2 * (L - 2) * L - 1
|
|
|
}
|
|
|
return
|
|
|
},
|
|
|
easeInOutCubic: function(L) {
|
|
|
if (L < 0.5) {
|
|
|
return Math.pow(L, 3) * 4
|
|
|
} else {
|
|
|
return Math.pow(L - 1, 3) * 4 + 1
|
|
|
}
|
|
|
},
|
|
|
easeInOutSine: function(L) {
|
|
|
return (1 - Math.cos(Math.PI * L)) / 2
|
|
|
}
|
|
|
};
|
|
|
i["ease-in"] = i.easeInQuad;
|
|
|
i["ease-out"] = i.easeOutQuad;
|
|
|
|
|
|
function j(L, M) {
|
|
|
this.x = L || 0;
|
|
|
this.y = M || 0
|
|
|
}
|
|
|
j.prototype.equals = function(L) {
|
|
|
return L && L.x == this.x && L.y == this.y
|
|
|
};
|
|
|
|
|
|
function d(M, L) {
|
|
|
this.width = M || 0;
|
|
|
this.height = L || 0
|
|
|
}
|
|
|
d.prototype.equals = function(L) {
|
|
|
return L && this.width == L.width && this.height == L.height
|
|
|
};
|
|
|
var B = 0;
|
|
|
|
|
|
function p() {}
|
|
|
J.object.extend(p, {
|
|
|
Request: {
|
|
|
INITIAL: -1,
|
|
|
WAITING: 0,
|
|
|
COMPLETED: 1
|
|
|
},
|
|
|
getDependency: function() {
|
|
|
return {
|
|
|
opmb: [],
|
|
|
control: [],
|
|
|
marker: [],
|
|
|
massfeatures: []
|
|
|
}
|
|
|
},
|
|
|
Config: {
|
|
|
_baseUrl: "http://api.map.baidu.com/getmodules?type=lite"
|
|
|
},
|
|
|
delayFlag: false,
|
|
|
ModuleTree: {
|
|
|
_modules: {},
|
|
|
_arrMdls: []
|
|
|
},
|
|
|
load: function(N, P, M) {
|
|
|
var L = this.getModule(N);
|
|
|
if (L._status == this.Request.COMPLETED) {
|
|
|
if (M) {
|
|
|
P && P()
|
|
|
}
|
|
|
return
|
|
|
} else {
|
|
|
if (L._status == this.Request.INITIAL) {
|
|
|
this.combine(N);
|
|
|
this.pushUniqueMdl(N);
|
|
|
var O = this;
|
|
|
if (O.delayFlag == false) {
|
|
|
O.delayFlag = true;
|
|
|
window.setTimeout(function() {
|
|
|
var W = O.ModuleTree._arrMdls.slice(0);
|
|
|
var Y = [];
|
|
|
for (var S = 0, R = W.length; S < R; S++) {
|
|
|
var X = W[S],
|
|
|
Q = A.asyncMdlVer[X],
|
|
|
U = "async_" + X + "_" + Q;
|
|
|
if (!A.chkVersion(U)) {
|
|
|
W[W[S]] = "";
|
|
|
Y.push(X + "_" + Q)
|
|
|
} else {
|
|
|
W[W[S]] = A.getVersion(U)
|
|
|
}
|
|
|
}
|
|
|
if (Y.length == 0) {
|
|
|
for (var S = 0, R = W.length; S < R; S++) {
|
|
|
var Z = W[S],
|
|
|
U = "async_" + Z + "_" + A.asyncMdlVer[Z],
|
|
|
V = A.getVersion(U);
|
|
|
p.run(Z, V)
|
|
|
}
|
|
|
} else {
|
|
|
var T = O.Config._baseUrl + "&mod=" + Y.join(",") + "&sendSequenceNum=" + B + "&v=1.0";
|
|
|
o.request(T);
|
|
|
window["sendSequenceNum" + B] = W;
|
|
|
B++
|
|
|
}
|
|
|
O.delayFlag = false;
|
|
|
O.ModuleTree._arrMdls.length = 0
|
|
|
}, 1)
|
|
|
}
|
|
|
L._status = this.Request.WAITING
|
|
|
}
|
|
|
L._callbacks.push(P)
|
|
|
}
|
|
|
},
|
|
|
combine: function(L) {
|
|
|
var N = this.getDependency();
|
|
|
if (L && N[L]) {
|
|
|
var N = N[L];
|
|
|
for (var M = 0; M < N.length; M++) {
|
|
|
this.combine(N[M]);
|
|
|
if (!this.ModuleTree._modules[N[M]]) {
|
|
|
this.pushUniqueMdl(N[M])
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
pushUniqueMdl: function(O) {
|
|
|
var L = this.ModuleTree._arrMdls;
|
|
|
for (var N = 0, M = L.length; N < M; N++) {
|
|
|
if (L[N] == O) {
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
L.push(O)
|
|
|
},
|
|
|
getModule: function(M) {
|
|
|
var L;
|
|
|
if (!this.ModuleTree._modules[M]) {
|
|
|
this.ModuleTree._modules[M] = {};
|
|
|
this.ModuleTree._modules[M]._status = this.Request.INITIAL;
|
|
|
this.ModuleTree._modules[M]._callbacks = []
|
|
|
}
|
|
|
L = this.ModuleTree._modules[M];
|
|
|
return L
|
|
|
},
|
|
|
run: function(O, R) {
|
|
|
var M = "async_" + O + "_" + A.asyncMdlVer[O],
|
|
|
Q = "async_" + O;
|
|
|
if (!A.chkVersion(M)) {
|
|
|
A.saveVersion(M, R, Q)
|
|
|
}
|
|
|
var N = this.getModule(O);
|
|
|
try {
|
|
|
eval(R)
|
|
|
} catch (S) {
|
|
|
return
|
|
|
}
|
|
|
N._status = this.Request.COMPLETED;
|
|
|
for (var P = 0, L = N._callbacks.length; P < L; P++) {
|
|
|
N._callbacks[P]()
|
|
|
}
|
|
|
N._callbacks.length = 0
|
|
|
}
|
|
|
});
|
|
|
window._jsload = function(Q, S, R) {
|
|
|
var L = window["sendSequenceNum" + R],
|
|
|
N = Q.split("_")[0];
|
|
|
L[N] = S;
|
|
|
var P = true;
|
|
|
for (var O = 0, M = L.length; O < M; O++) {
|
|
|
if (L[L[O]].length <= 0) {
|
|
|
P = false;
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
if (P) {
|
|
|
for (var O = 0, M = L.length; O < M; O++) {
|
|
|
var Q = L[O],
|
|
|
S = L[Q];
|
|
|
p.run(Q, S)
|
|
|
}
|
|
|
L.length = 0;
|
|
|
delete window["sendSequenceNum" + R]
|
|
|
}
|
|
|
};
|
|
|
var A = {
|
|
|
asyncMdlVer: {
|
|
|
control: "ldhxzj",
|
|
|
marker: "01zsya",
|
|
|
opmb: "dt2tyx",
|
|
|
massfeatures: "j0omg2"
|
|
|
},
|
|
|
chkVersion: function(L) {
|
|
|
try {
|
|
|
var M = window.localStorage;
|
|
|
if (!M) {
|
|
|
return false
|
|
|
}
|
|
|
return M[L] && M[L].length > 0
|
|
|
} catch (N) {
|
|
|
return false
|
|
|
}
|
|
|
},
|
|
|
saveVersion: function(L, R, P) {
|
|
|
try {
|
|
|
var N = window.localStorage;
|
|
|
if (N) {
|
|
|
for (var M = N.length, O = M - 1; O >= 0; O--) {
|
|
|
var S = N.key(O);
|
|
|
if (S.indexOf(P) > -1) {
|
|
|
N.removeItem(S)
|
|
|
}
|
|
|
}
|
|
|
N.setItem(L, R)
|
|
|
}
|
|
|
} catch (Q) {}
|
|
|
},
|
|
|
getVersion: function(L) {
|
|
|
try {
|
|
|
var M = window.localStorage;
|
|
|
if (!M) {
|
|
|
return ""
|
|
|
}
|
|
|
return M.getItem(L)
|
|
|
} catch (N) {
|
|
|
return ""
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
void
|
|
|
function(N, L, M) {
|
|
|
void
|
|
|
function(Y, ay, aa) {
|
|
|
var av = "alog";
|
|
|
var W = aa[av];
|
|
|
if (W && W.defined) {
|
|
|
return
|
|
|
}
|
|
|
var am = ay.all && Y.attachEvent,
|
|
|
ar, R = (W && W.l) || +new Date,
|
|
|
ac = Y.logId || (+new Date).toString(36) + Math.random().toString(36).substr(2, 3),
|
|
|
ae = 0,
|
|
|
ag = {},
|
|
|
ak = function(aF) {
|
|
|
var aA = arguments;
|
|
|
var az, aC, aE, aD;
|
|
|
if (aF == "define" || aF == "require") {
|
|
|
for (var aB = 1; aB < aA.length; aB++) {
|
|
|
switch (typeof aA[aB]) {
|
|
|
case "string":
|
|
|
az = aA[aB];
|
|
|
break;
|
|
|
case "object":
|
|
|
aE = aA[aB];
|
|
|
break;
|
|
|
case "function":
|
|
|
aD = aA[aB];
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
if (aF == "require") {
|
|
|
if (az && !aE) {
|
|
|
aE = [az]
|
|
|
}
|
|
|
az = null
|
|
|
}
|
|
|
az = !az ? "#" + (ae++) : az;
|
|
|
aC = ah[az] = (ah[az] || {});
|
|
|
if (!aC.defined) {
|
|
|
aC.name = az;
|
|
|
aC.requires = aE;
|
|
|
aC.creator = aD;
|
|
|
if (aF == "define") {
|
|
|
aC.defining = true
|
|
|
}
|
|
|
ab(aC)
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
if (typeof aF == "function") {
|
|
|
aF(ak);
|
|
|
return
|
|
|
}
|
|
|
String(aF).replace(/^(?:([\w$_]+)\.)?(\w+)$/, function(aG, aH, aI) {
|
|
|
aA[0] = aI;
|
|
|
Z.apply(ak.tracker(aH), aA)
|
|
|
})
|
|
|
},
|
|
|
aq = {},
|
|
|
S = {},
|
|
|
ah = {
|
|
|
alog: {
|
|
|
name: "alog",
|
|
|
defined: true,
|
|
|
instance: ak
|
|
|
}
|
|
|
},
|
|
|
an;
|
|
|
|
|
|
function au(az) {
|
|
|
var aB = P.get("alias") || {};
|
|
|
var aC = aB[az] || (az + ".js");
|
|
|
if (ag[aC]) {
|
|
|
return
|
|
|
}
|
|
|
ag[aC] = true;
|
|
|
var aA = "script";
|
|
|
var aE = ay.createElement(aA);
|
|
|
var aD = ay.getElementsByTagName(aA)[0];
|
|
|
aE.async = !0;
|
|
|
aE.src = aC;
|
|
|
aD.parentNode.insertBefore(aE, aD)
|
|
|
}
|
|
|
|
|
|
function ab(aB) {
|
|
|
if (aB.defined) {
|
|
|
return
|
|
|
}
|
|
|
var aF = true;
|
|
|
var aE = [];
|
|
|
var aC = aB.requires;
|
|
|
for (var aA = 0; aC && aA < aC.length; aA++) {
|
|
|
var az = aC[aA];
|
|
|
var aD = ah[az] = (ah[az] || {});
|
|
|
if (aD.defined || aD == aB) {
|
|
|
aE.push(aD.instance)
|
|
|
} else {
|
|
|
aF = false;
|
|
|
if (!aD.defining) {
|
|
|
au(az)
|
|
|
}
|
|
|
aD.waiting = aD.waiting || {};
|
|
|
aD.waiting[aB.name] = aB
|
|
|
}
|
|
|
}
|
|
|
if (aF) {
|
|
|
aB.defined = true;
|
|
|
if (aB.creator) {
|
|
|
aB.instance = aB.creator.apply(aB, aE)
|
|
|
}
|
|
|
ao(aB)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function ao(az) {
|
|
|
for (var aA in az.waiting) {
|
|
|
ab(az.waiting[aA])
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function V(az) {
|
|
|
return (az || new Date) - R
|
|
|
}
|
|
|
|
|
|
function aj(aB, az, aC) {
|
|
|
if (!aB) {
|
|
|
return
|
|
|
}
|
|
|
if (typeof aB == "string") {
|
|
|
aC = az;
|
|
|
az = aB;
|
|
|
aB = ak
|
|
|
}
|
|
|
try {
|
|
|
if (aB == ak) {
|
|
|
aq[az] = aq[az] || [];
|
|
|
aq[az].unshift(aC);
|
|
|
return
|
|
|
}
|
|
|
if (aB.addEventListener) {
|
|
|
aB.addEventListener(az, aC, false)
|
|
|
} else {
|
|
|
if (aB.attachEvent) {
|
|
|
aB.attachEvent("on" + az, aC)
|
|
|
}
|
|
|
}
|
|
|
} catch (aA) {}
|
|
|
}
|
|
|
|
|
|
function al(aC, az, aE) {
|
|
|
if (!aC) {
|
|
|
return
|
|
|
}
|
|
|
if (typeof aC == "string") {
|
|
|
aE = az;
|
|
|
az = aC;
|
|
|
aC = ak
|
|
|
}
|
|
|
try {
|
|
|
if (aC == ak) {
|
|
|
var aD = aq[az];
|
|
|
if (!aD) {
|
|
|
return
|
|
|
}
|
|
|
var aB = aD.length;
|
|
|
while (aB--) {
|
|
|
if (aD[aB] === aE) {
|
|
|
aD.splice(aB, 1)
|
|
|
}
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
if (aC.removeEventListener) {
|
|
|
aC.removeEventListener(az, aE, false)
|
|
|
} else {
|
|
|
aC.detachEvent && aC.detachEvent("on" + az, aE)
|
|
|
}
|
|
|
} catch (aA) {}
|
|
|
}
|
|
|
|
|
|
function af(aB) {
|
|
|
var aE = aq[aB],
|
|
|
az = 0;
|
|
|
if (!aE) {
|
|
|
return
|
|
|
}
|
|
|
var aA = [];
|
|
|
var aC = arguments;
|
|
|
for (var aD = 1; aD < aC.length; aD++) {
|
|
|
aA.push(aC[aD])
|
|
|
}
|
|
|
var aD = aE.length;
|
|
|
while (aD--) {
|
|
|
if (aE[aD].apply(this, aA)) {
|
|
|
az++
|
|
|
}
|
|
|
}
|
|
|
return az
|
|
|
}
|
|
|
|
|
|
function ax(aB, aD) {
|
|
|
if (!aB || !aD) {
|
|
|
return
|
|
|
}
|
|
|
var aE = new Image(1, 1),
|
|
|
az = [],
|
|
|
aA = "img_" + (+new Date);
|
|
|
for (var aC in aD) {
|
|
|
if (aD[aC]) {
|
|
|
az.push(aC + "=" + encodeURIComponent(aD[aC]))
|
|
|
}
|
|
|
}
|
|
|
ak[aA] = aE;
|
|
|
aE.onload = aE.onerror = function() {
|
|
|
ak[aA] = aE = aE.onload = aE.onerror = null;
|
|
|
delete ak[aA]
|
|
|
};
|
|
|
aE.src = aB + "?" + az.join("&")
|
|
|
}
|
|
|
|
|
|
function X(aA, aB) {
|
|
|
if (!aA) {
|
|
|
return aB
|
|
|
}
|
|
|
var az = {};
|
|
|
for (var aC in aB) {
|
|
|
if (aA[aC] !== null) {
|
|
|
az[aA[aC] || aC] = aB[aC]
|
|
|
}
|
|
|
}
|
|
|
return az
|
|
|
}
|
|
|
|
|
|
function Z() {
|
|
|
var aA = arguments;
|
|
|
var aE = aA[0];
|
|
|
if (this.created || /^(on|un|set|get|create)$/.test(aE)) {
|
|
|
var aC = ai.prototype[aE];
|
|
|
var aD = [];
|
|
|
for (var aB = 1, az = aA.length; aB < az; aB++) {
|
|
|
aD.push(aA[aB])
|
|
|
}
|
|
|
if (typeof aC == "function") {
|
|
|
aC.apply(this, aD)
|
|
|
}
|
|
|
} else {
|
|
|
this.argsList.push(aA)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function ap(aB, aA) {
|
|
|
var az = {};
|
|
|
for (var aC in aB) {
|
|
|
if (aB.hasOwnProperty(aC)) {
|
|
|
az[aC] = aB[aC]
|
|
|
}
|
|
|
}
|
|
|
for (var aC in aA) {
|
|
|
if (aA.hasOwnProperty(aC)) {
|
|
|
az[aC] = aA[aC]
|
|
|
}
|
|
|
}
|
|
|
return az
|
|
|
}
|
|
|
|
|
|
function ai(az) {
|
|
|
this.name = az;
|
|
|
this.fields = {
|
|
|
protocolParameter: {
|
|
|
postUrl: null,
|
|
|
protocolParameter: null
|
|
|
}
|
|
|
};
|
|
|
this.argsList = [];
|
|
|
this["alog"] = ak
|
|
|
}
|
|
|
|
|
|
function Q(aC) {
|
|
|
var az;
|
|
|
aC = aC || "default";
|
|
|
if (aC == "*") {
|
|
|
az = [];
|
|
|
for (var aB in S) {
|
|
|
az.push(S[aB])
|
|
|
}
|
|
|
return az
|
|
|
}
|
|
|
var aA = S[aC];
|
|
|
if (!aA) {
|
|
|
aA = S[aC] = new ai(aC)
|
|
|
}
|
|
|
return aA
|
|
|
}
|
|
|
ai.prototype.start = ai.prototype.create = function(az) {
|
|
|
if (this.created) {
|
|
|
return
|
|
|
}
|
|
|
if (typeof az == "object") {
|
|
|
this.set(az)
|
|
|
}
|
|
|
this.created = new Date;
|
|
|
this.fire("create", this);
|
|
|
var aA;
|
|
|
while (aA = this.argsList.shift()) {
|
|
|
Z.apply(this, aA)
|
|
|
}
|
|
|
};
|
|
|
ai.prototype.send = function(aC, aA) {
|
|
|
var aB = ap({
|
|
|
ts: V().toString(36),
|
|
|
t: aC,
|
|
|
sid: ac
|
|
|
}, this.fields);
|
|
|
if (typeof aA == "object") {
|
|
|
aB = ap(aB, aA)
|
|
|
} else {
|
|
|
var az = arguments;
|
|
|
switch (aC) {
|
|
|
case "pageview":
|
|
|
if (az[1]) {
|
|
|
aB.page = az[1]
|
|
|
}
|
|
|
if (az[2]) {
|
|
|
aB.title = az[2]
|
|
|
}
|
|
|
break;
|
|
|
case "event":
|
|
|
if (az[1]) {
|
|
|
aB.eventCategory = az[1]
|
|
|
}
|
|
|
if (az[2]) {
|
|
|
aB.eventAction = az[2]
|
|
|
}
|
|
|
if (az[3]) {
|
|
|
aB.eventLabel = az[3]
|
|
|
}
|
|
|
if (az[4]) {
|
|
|
aB.eventValue = az[4]
|
|
|
}
|
|
|
break;
|
|
|
case "timing":
|
|
|
if (az[1]) {
|
|
|
aB.timingCategory = az[1]
|
|
|
}
|
|
|
if (az[2]) {
|
|
|
aB.timingVar = az[2]
|
|
|
}
|
|
|
if (az[3]) {
|
|
|
aB.timingValue = az[3]
|
|
|
}
|
|
|
if (az[4]) {
|
|
|
aB.timingLabel = az[4]
|
|
|
}
|
|
|
break;
|
|
|
case "exception":
|
|
|
if (az[1]) {
|
|
|
aB.exDescription = az[1]
|
|
|
}
|
|
|
if (az[2]) {
|
|
|
aB.exFatal = az[2]
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
this.fire("send", aB);
|
|
|
ax(this.fields.postUrl, X(this.fields.protocolParameter, aB))
|
|
|
};
|
|
|
ai.prototype.set = function(az, aA) {
|
|
|
if (typeof az == "string") {
|
|
|
if (az == "protocolParameter") {
|
|
|
aA = ap({
|
|
|
postUrl: null,
|
|
|
protocolParameter: null
|
|
|
}, aA)
|
|
|
}
|
|
|
this.fields[az] = aA
|
|
|
} else {
|
|
|
if (typeof az == "object") {
|
|
|
for (var aB in az) {
|
|
|
this.set(aB, az[aB])
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
ai.prototype.get = function(aA, aB) {
|
|
|
var az = this.fields[aA];
|
|
|
if (typeof aB == "function") {
|
|
|
aB(az)
|
|
|
}
|
|
|
return az
|
|
|
};
|
|
|
ai.prototype.fire = function(az, aA) {
|
|
|
return ak.fire(this.name + "." + az, aA)
|
|
|
};
|
|
|
ai.prototype.on = function(az, aA) {
|
|
|
ak.on(this.name + "." + az, aA)
|
|
|
};
|
|
|
ai.prototype.un = function(az, aA) {
|
|
|
ak.un(this.name + "." + az, aA)
|
|
|
};
|
|
|
ak.name = "alog";
|
|
|
ak.sid = ac;
|
|
|
ak.defined = true;
|
|
|
ak.timestamp = V;
|
|
|
ak.un = al;
|
|
|
ak.on = aj;
|
|
|
ak.fire = af;
|
|
|
ak.tracker = Q;
|
|
|
ak("init");
|
|
|
var O = ai.prototype;
|
|
|
s(O, {
|
|
|
start: O.start,
|
|
|
create: O.create,
|
|
|
send: O.send,
|
|
|
set: O.set,
|
|
|
get: O.get,
|
|
|
on: O.on,
|
|
|
un: O.un,
|
|
|
fire: O.fire
|
|
|
});
|
|
|
var P = Q();
|
|
|
P.set("protocolParameter", {
|
|
|
alias: null
|
|
|
});
|
|
|
if (W) {
|
|
|
var ad = [].concat(W.p || [], W.q || []);
|
|
|
W.p = W.q = null;
|
|
|
for (var at in ak) {
|
|
|
if (ak.hasOwnProperty(at)) {
|
|
|
W[at] = ak[at]
|
|
|
}
|
|
|
}
|
|
|
ak.p = ak.q = {
|
|
|
push: function(az) {
|
|
|
ak.apply(ak, az)
|
|
|
}
|
|
|
};
|
|
|
for (var aw = 0; aw < ad.length; aw++) {
|
|
|
ak.apply(ak, ad[aw])
|
|
|
}
|
|
|
}
|
|
|
aa[av] = ak;
|
|
|
if (am) {
|
|
|
aj(ay, "mouseup", function(aA) {
|
|
|
var az = aA.target || aA.srcElement;
|
|
|
if (az.nodeType == 1 && /^ajavascript:/i.test(az.tagName + az.href)) {
|
|
|
ar = new Date
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
function T() {
|
|
|
if (am && (new Date - ar < 50)) {
|
|
|
return
|
|
|
}
|
|
|
if (an) {
|
|
|
return
|
|
|
}
|
|
|
an = true;
|
|
|
var az = 0;
|
|
|
for (var aB in S) {
|
|
|
var aA = S[aB];
|
|
|
if (aA.created) {
|
|
|
az += aA.fire("unload")
|
|
|
}
|
|
|
}
|
|
|
if (az) {
|
|
|
var aC = new Date;
|
|
|
while (new Date - aC < 100) {}
|
|
|
}
|
|
|
}
|
|
|
var U = false;
|
|
|
Y.onerror = function(aD, aB, az, aC) {
|
|
|
var aA = true;
|
|
|
if (!aB && /^script error/i.test(aD)) {
|
|
|
if (U) {
|
|
|
aA = false
|
|
|
} else {
|
|
|
U = true
|
|
|
}
|
|
|
}
|
|
|
if (aA) {
|
|
|
aa.alog("exception.send", "exception", {
|
|
|
msg: aD,
|
|
|
js: aB,
|
|
|
ln: az,
|
|
|
col: aC
|
|
|
})
|
|
|
}
|
|
|
return false
|
|
|
};
|
|
|
aa.alog("exception.on", "catch", function(az) {
|
|
|
aa.alog("exception.send", "exception", {
|
|
|
msg: az.msg,
|
|
|
js: az.path,
|
|
|
ln: az.ln,
|
|
|
method: az.method,
|
|
|
flag: "catch"
|
|
|
})
|
|
|
})
|
|
|
}(N, L, M);
|
|
|
void
|
|
|
function(aa, ba, bj) {
|
|
|
var at = "18_5";
|
|
|
var aF = {
|
|
|
product: "18",
|
|
|
page: at,
|
|
|
monkey_page: "",
|
|
|
speed_page: "",
|
|
|
monkey: {
|
|
|
sample: "0.1"
|
|
|
},
|
|
|
exception: {
|
|
|
sample: "0.1"
|
|
|
},
|
|
|
cus: {
|
|
|
sample: "0.1"
|
|
|
},
|
|
|
feature: {
|
|
|
sample: "0"
|
|
|
}
|
|
|
};
|
|
|
var aE = "http://fex.bdstatic.com";
|
|
|
var Y = "http://static.tieba.baidu.com";
|
|
|
var Q = Y;
|
|
|
if (aa.location.protocol === "https:") {
|
|
|
aE = "https://fex.bdstatic.com";
|
|
|
Y = "https://gsp0.baidu.com/5aAHeD3nKhI2p27j8IqW0jdnxx1xbK";
|
|
|
Q = Y
|
|
|
}
|
|
|
var ab = aF.product;
|
|
|
var aJ = aF.page;
|
|
|
var aZ = aF.monkey_page;
|
|
|
var aT = aF.speed_page;
|
|
|
var V = Math.random;
|
|
|
var az = Y + "/tb/pms/img/st.gif";
|
|
|
var ae = az;
|
|
|
var aA = aF.monkey;
|
|
|
var av = aF.exception;
|
|
|
var ai = aF.cus;
|
|
|
var aG = aF.feature;
|
|
|
if (aA && aA.sample && V() < aA.sample) {
|
|
|
var R = bj.alog.tracker("monkey");
|
|
|
var aM;
|
|
|
var X = aa.screen;
|
|
|
var bh = ba.referrer;
|
|
|
R.set("ver", 5);
|
|
|
R.set("pid", 241);
|
|
|
if (X) {
|
|
|
R.set("px", X.width + "*" + X.height)
|
|
|
}
|
|
|
R.set("ref", bh);
|
|
|
bj.alog("monkey.on", "create", function() {
|
|
|
aM = bj.alog.timestamp;
|
|
|
R.set("protocolParameter", {
|
|
|
reports: null
|
|
|
})
|
|
|
});
|
|
|
bj.alog("monkey.on", "send", function(bl) {
|
|
|
if (bl.t == "pageview") {
|
|
|
bl.cmd = "open"
|
|
|
}
|
|
|
if (bl.now) {
|
|
|
bl.ts = aM(bl.now).toString(36);
|
|
|
bl.now = ""
|
|
|
}
|
|
|
});
|
|
|
bj.alog("monkey.create", {
|
|
|
page: aJ,
|
|
|
pid: "241",
|
|
|
p: ab,
|
|
|
dv: 6,
|
|
|
postUrl: ae,
|
|
|
reports: {
|
|
|
refer: 1
|
|
|
}
|
|
|
});
|
|
|
bj.alog("monkey.send", "pageview", {
|
|
|
now: +new Date
|
|
|
})
|
|
|
}
|
|
|
if (av && av.sample && V() < av.sample) {
|
|
|
var ap = false;
|
|
|
aa.onerror = function(bp, bn, bl, bo) {
|
|
|
var bm = true;
|
|
|
if (!bn && /^script error/i.test(bp)) {
|
|
|
if (ap) {
|
|
|
bm = false
|
|
|
} else {
|
|
|
ap = true
|
|
|
}
|
|
|
}
|
|
|
if (bm) {
|
|
|
bj.alog("exception.send", "exception", {
|
|
|
msg: bp,
|
|
|
js: bn,
|
|
|
ln: bl,
|
|
|
col: bo
|
|
|
})
|
|
|
}
|
|
|
return false
|
|
|
};
|
|
|
bj.alog("exception.on", "catch", function(bl) {
|
|
|
bj.alog("exception.send", "exception", {
|
|
|
msg: bl.msg,
|
|
|
js: bl.path,
|
|
|
ln: bl.ln,
|
|
|
method: bl.method,
|
|
|
flag: "catch"
|
|
|
})
|
|
|
});
|
|
|
bj.alog("exception.create", {
|
|
|
postUrl: ae,
|
|
|
dv: 7,
|
|
|
page: aZ ? aZ : aJ,
|
|
|
pid: "170",
|
|
|
p: ab
|
|
|
})
|
|
|
}
|
|
|
if (ai && ai.sample && V() < ai.sample) {
|
|
|
bj.alog("cus.on", "time", function(bo) {
|
|
|
var bn = {};
|
|
|
var bl = false;
|
|
|
var bp;
|
|
|
if (bo.toString() !== "[object Object]") {
|
|
|
return
|
|
|
}
|
|
|
for (var bm in bo) {
|
|
|
if (bm == "page") {
|
|
|
bn.page = bo[bm];
|
|
|
continue
|
|
|
}
|
|
|
bp = parseInt(bo[bm]);
|
|
|
if (bp > 0 && /^z_/.test(bm)) {
|
|
|
bl = true;
|
|
|
bn[bm] = bp
|
|
|
}
|
|
|
}
|
|
|
if (bl) {
|
|
|
bj.alog("cus.send", "time", bn)
|
|
|
}
|
|
|
});
|
|
|
bj.alog("cus.on", "count", function(bo) {
|
|
|
var bn = {};
|
|
|
var bl = false;
|
|
|
if (typeof bo === "string") {
|
|
|
bo = [bo]
|
|
|
}
|
|
|
if (bo instanceof Array) {
|
|
|
for (var bm = 0; bm < bo.length; bm++) {
|
|
|
if (/^z_/.test(bo[bm])) {
|
|
|
bl = true;
|
|
|
bn[bo[bm]] = 1
|
|
|
} else {
|
|
|
if (/^page:/.test(bo[bm])) {
|
|
|
bn.page = bo[bm].substring(5)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (bl) {
|
|
|
bj.alog("cus.send", "count", bn)
|
|
|
}
|
|
|
});
|
|
|
bj.alog("cus.create", {
|
|
|
dv: 3,
|
|
|
postUrl: az,
|
|
|
page: aJ,
|
|
|
p: ab
|
|
|
})
|
|
|
}
|
|
|
if (aG && aG.sample && V() < aG.sample) {
|
|
|
var a8 = ["Moz", "O", "ms", "Webkit"];
|
|
|
var ar = ["-webkit-", "-moz-", "-o-", "-ms-"];
|
|
|
var aC = function() {
|
|
|
if (typeof ba.createElement !== "function") {
|
|
|
return ba.createElement(arguments[0])
|
|
|
} else {
|
|
|
return ba.createElement.apply(ba, arguments)
|
|
|
}
|
|
|
};
|
|
|
var bf = {
|
|
|
elem: aC("dpFeatureTest")
|
|
|
};
|
|
|
var ac = {
|
|
|
style: bf.elem.style
|
|
|
};
|
|
|
|
|
|
function an(bm, bl) {
|
|
|
return typeof bm === bl
|
|
|
}
|
|
|
|
|
|
function U(bm, bp, bo) {
|
|
|
var bn;
|
|
|
for (var bl in bm) {
|
|
|
if (bm[bl] in bp) {
|
|
|
if (bo === false) {
|
|
|
return bm[bl]
|
|
|
}
|
|
|
bn = bp[bm[bl]];
|
|
|
if (an(bn, "function")) {
|
|
|
return fnBind(bn, bo || bp)
|
|
|
}
|
|
|
return bn
|
|
|
}
|
|
|
}
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
function aj(bn, bl, bm) {
|
|
|
return bd(bn, undefined, undefined, bl, bm)
|
|
|
}
|
|
|
|
|
|
function bd(br, bl, bo, bp, bq) {
|
|
|
var bm = br.charAt(0).toUpperCase() + br.slice(1),
|
|
|
bn = (br + " " + a8.join(bm + " ") + bm).split(" ");
|
|
|
if (an(bl, "string") || an(bl, "undefined")) {
|
|
|
return aO(bn, bl, bp, bq)
|
|
|
} else {
|
|
|
bn = (br + " " + (a8).join(bm + " ") + bm).split(" ");
|
|
|
return U(bn, bl, bo)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function aO(bp, bn, bs, bq) {
|
|
|
bq = an(bq, "undefined") ? false : bq;
|
|
|
var bt, bo, bl, bm, br;
|
|
|
bl = bp.length;
|
|
|
for (bo = 0; bo < bl; bo++) {
|
|
|
bm = bp[bo];
|
|
|
br = ac.style[bm];
|
|
|
if (!!~("" + bm).indexOf("-")) {
|
|
|
bm = al(bm)
|
|
|
}
|
|
|
if (ac.style[bm] !== undefined) {
|
|
|
return bn == "pfx" ? bm : true
|
|
|
}
|
|
|
}
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
function al(bl) {
|
|
|
return bl.replace(/([a-z])-([a-z])/g, function(bo, bn, bm) {
|
|
|
return bn + bm.toUpperCase()
|
|
|
}).replace(/^-/, "")
|
|
|
}
|
|
|
var ax = function(bn, bm, bl) {
|
|
|
if (bn.indexOf("@") === 0) {
|
|
|
return atRule(bn)
|
|
|
}
|
|
|
if (bn.indexOf("-") != -1) {
|
|
|
bn = al(bn)
|
|
|
}
|
|
|
if (!bm) {
|
|
|
return bd(bn, "pfx")
|
|
|
} else {
|
|
|
return bd(bn, bm, bl)
|
|
|
}
|
|
|
};
|
|
|
|
|
|
function a4() {
|
|
|
var bl = aC("canvas");
|
|
|
return !!(bl.getContext && bl.getContext("2d"))
|
|
|
}
|
|
|
|
|
|
function aV() {
|
|
|
var bl = aC("div");
|
|
|
return ("draggable" in bl) || ("ondragstart" in bl && "ondrop" in bl)
|
|
|
}
|
|
|
|
|
|
function ah() {
|
|
|
var bl = "localStorage";
|
|
|
try {
|
|
|
localStorage.setItem(bl, bl);
|
|
|
localStorage.removeItem(bl);
|
|
|
return true
|
|
|
} catch (bm) {
|
|
|
return false
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function aL() {
|
|
|
return "content" in ba.createElement("template")
|
|
|
}
|
|
|
|
|
|
function aX() {
|
|
|
return "createShadowRoot" in ba.createElement("a")
|
|
|
}
|
|
|
|
|
|
function aS() {
|
|
|
return "registerElement" in ba
|
|
|
}
|
|
|
|
|
|
function O() {
|
|
|
return "import" in ba.createElement("link")
|
|
|
}
|
|
|
|
|
|
function T() {
|
|
|
return "getItems" in ba
|
|
|
}
|
|
|
|
|
|
function aq() {
|
|
|
return "EventSource" in window
|
|
|
}
|
|
|
|
|
|
function a7(bn, bo) {
|
|
|
var bl = {
|
|
|
lossy: "UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",
|
|
|
lossless: "UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==",
|
|
|
alpha: "UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==",
|
|
|
animation: "UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"
|
|
|
};
|
|
|
var bm = new Image();
|
|
|
bm.onload = function() {
|
|
|
var bp = (bm.width > 0) && (bm.height > 0);
|
|
|
bo(bn, bp)
|
|
|
};
|
|
|
bm.onerror = function() {
|
|
|
bo(bn, false)
|
|
|
};
|
|
|
bm.src = "data:image/webp;base64," + bl[bn]
|
|
|
}
|
|
|
|
|
|
function bi(bm, bl) {
|
|
|
ag.f["WebP-" + bm] = bl;
|
|
|
return bl
|
|
|
}
|
|
|
|
|
|
function aY() {
|
|
|
return "openDatabase" in aa
|
|
|
}
|
|
|
|
|
|
function a3() {
|
|
|
return "performance" in aa && "timing" in aa.performance
|
|
|
}
|
|
|
|
|
|
function be() {
|
|
|
return "performance" in aa && "mark" in aa.performance
|
|
|
}
|
|
|
|
|
|
function aB() {
|
|
|
return !!(Array.prototype && Array.prototype.every && Array.prototype.filter && Array.prototype.forEach &&
|
|
|
Array.prototype.indexOf && Array.prototype.lastIndexOf && Array.prototype.map && Array.prototype.some &&
|
|
|
Array.prototype.reduce && Array.prototype.reduceRight && Array.isArray)
|
|
|
}
|
|
|
|
|
|
function ad() {
|
|
|
return "Promise" in aa && "cast" in aa.Promise && "resolve" in aa.Promise && "reject" in aa.Promise && "all" in
|
|
|
aa.Promise && "race" in aa.Promise && (function() {
|
|
|
var bl;
|
|
|
new aa.Promise(function(bm) {
|
|
|
bl = bm
|
|
|
});
|
|
|
return typeof bl === "function"
|
|
|
}())
|
|
|
}
|
|
|
|
|
|
function ao() {
|
|
|
var bl = !!(aa.ProgressEvent);
|
|
|
var bm = !!(aa.FormData);
|
|
|
var bn = aa.XMLHttpRequest && "withCredentials" in new XMLHttpRequest;
|
|
|
return bl && bm && bn
|
|
|
}
|
|
|
|
|
|
function aN() {
|
|
|
return "geolocation" in navigator
|
|
|
}
|
|
|
|
|
|
function ay() {
|
|
|
var bm = aC("canvas");
|
|
|
var bl = "probablySupportsContext" in bm ? "probablySupportsContext" : "supportsContext";
|
|
|
if (bl in bm) {
|
|
|
return bm[bl]("webgl") || bm[bl]("experimental-webgl")
|
|
|
}
|
|
|
return "WebGLRenderingContext" in aa
|
|
|
}
|
|
|
|
|
|
function aI() {
|
|
|
return !!ba.createElementNS && !!ba.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect
|
|
|
}
|
|
|
|
|
|
function a5() {
|
|
|
return !!aa.Worker
|
|
|
}
|
|
|
|
|
|
function a1() {
|
|
|
return "WebSocket" in aa && aa.WebSocket.CLOSING === 2
|
|
|
}
|
|
|
|
|
|
function aQ() {
|
|
|
var bl = ba.createElement("video");
|
|
|
return !!bl.canPlayType
|
|
|
}
|
|
|
|
|
|
function am() {
|
|
|
var bl = ba.createElement("audio");
|
|
|
return !!bl.canPlayType
|
|
|
}
|
|
|
|
|
|
function aW() {
|
|
|
return !!(aa.history && "pushState" in aa.history)
|
|
|
}
|
|
|
|
|
|
function aH() {
|
|
|
return !!(aa.File && aa.FileReader)
|
|
|
}
|
|
|
|
|
|
function aK() {
|
|
|
return "postMessage" in window
|
|
|
}
|
|
|
|
|
|
function aP() {
|
|
|
return !!aa.webkitNotifications || ("Notification" in aa && "permission" in aa.Notification &&
|
|
|
"requestPermission" in aa.Notification)
|
|
|
}
|
|
|
|
|
|
function aD() {
|
|
|
var bn = ["webkit", "moz", "o", "ms"];
|
|
|
var bm = aa.requestAnimationFrame;
|
|
|
for (var bl = 0; bl < bn.length && !bm; ++bl) {
|
|
|
bm = aa[bn[bl] + "RequestAnimationFrame"]
|
|
|
}
|
|
|
return !!bm
|
|
|
}
|
|
|
|
|
|
function aR() {
|
|
|
return "JSON" in aa && "parse" in JSON && "stringify" in JSON
|
|
|
}
|
|
|
|
|
|
function a6() {
|
|
|
return !!(ax("exitFullscreen", ba, false) || ax("cancelFullScreen", ba, false))
|
|
|
}
|
|
|
|
|
|
function ak() {
|
|
|
return !!ax("Intl", aa)
|
|
|
}
|
|
|
|
|
|
function a0() {
|
|
|
return aj("flexBasis", "1px", true)
|
|
|
}
|
|
|
|
|
|
function a2() {
|
|
|
return !!aj("perspective", "1px", true)
|
|
|
}
|
|
|
|
|
|
function au() {
|
|
|
return aj("shapeOutside", "content-box", true)
|
|
|
}
|
|
|
|
|
|
function bk() {
|
|
|
var bl = aC("div");
|
|
|
bl.style.cssText = ar.join("filter:blur(2px); ");
|
|
|
return !!bl.style.length && ((ba.documentMode === undefined || ba.documentMode > 9))
|
|
|
}
|
|
|
|
|
|
function Z() {
|
|
|
return "XMLHttpRequest" in aa && "withCredentials" in new XMLHttpRequest()
|
|
|
}
|
|
|
|
|
|
function W() {
|
|
|
return aC("progress").max !== undefined
|
|
|
}
|
|
|
|
|
|
function aU() {
|
|
|
return aC("meter").max !== undefined
|
|
|
}
|
|
|
|
|
|
function bc() {
|
|
|
return "sendBeacon" in navigator
|
|
|
}
|
|
|
|
|
|
function a9() {
|
|
|
return aj("borderRadius", "0px", true)
|
|
|
}
|
|
|
|
|
|
function P() {
|
|
|
return aj("boxShadow", "1px 1px", true)
|
|
|
}
|
|
|
|
|
|
function S() {
|
|
|
var bm = aC("div");
|
|
|
var bl = bm.style;
|
|
|
bl.cssText = ar.join("opacity:.55;");
|
|
|
return (/^0.55$/).test(bl.opacity)
|
|
|
}
|
|
|
|
|
|
function bb() {
|
|
|
return aO(["textShadow"], undefined, "1px 1px")
|
|
|
}
|
|
|
|
|
|
function af() {
|
|
|
return aj("animationName", "a", true)
|
|
|
}
|
|
|
|
|
|
function aw() {
|
|
|
return aj("transition", "all", true)
|
|
|
}
|
|
|
|
|
|
function bg() {
|
|
|
return navigator.userAgent.indexOf("Android 2.") === -1 && aj("transform", "scale(1)", true)
|
|
|
}
|
|
|
var ag = {
|
|
|
f: {},
|
|
|
t: function(bl, bn, bm) {
|
|
|
this.f[bl] = bn.apply(this, [].slice.call(arguments, 2))
|
|
|
},
|
|
|
c: function(bm, bl) {
|
|
|
bm.apply(this, [].slice.call(arguments, 1))
|
|
|
},
|
|
|
runAllTest: function() {
|
|
|
var bl = this;
|
|
|
bl.t("bdrs", a9);
|
|
|
bl.t("bxsd", P);
|
|
|
bl.t("opat", S);
|
|
|
bl.t("txsd", bb);
|
|
|
bl.t("anim", af);
|
|
|
bl.t("trsi", aw);
|
|
|
bl.t("trfm", bg);
|
|
|
bl.t("flex", a0);
|
|
|
bl.t("3dtr", a2);
|
|
|
bl.t("shpe", au);
|
|
|
bl.t("fltr", bk);
|
|
|
bl.t("cavs", a4);
|
|
|
bl.t("dgdp", aV);
|
|
|
bl.t("locs", ah);
|
|
|
bl.t("wctem", aL);
|
|
|
bl.t("wcsdd", aX);
|
|
|
bl.t("wccse", aS);
|
|
|
bl.t("wchti", O);
|
|
|
bl.c(a7, "lossy", bi);
|
|
|
bl.c(a7, "lossless", bi);
|
|
|
bl.c(a7, "alpha", bi);
|
|
|
bl.c(a7, "animation", bi);
|
|
|
bl.t("wsql", aY);
|
|
|
bl.t("natm", a3);
|
|
|
bl.t("ustm", be);
|
|
|
bl.t("arra", aB);
|
|
|
bl.t("prms", ad);
|
|
|
bl.t("xhr2", ao);
|
|
|
bl.t("wbgl", ay);
|
|
|
bl.t("geol", aN);
|
|
|
bl.t("svg", aI);
|
|
|
bl.t("work", a5);
|
|
|
bl.t("wbsk", a1);
|
|
|
bl.t("vido", aQ);
|
|
|
bl.t("audo", am);
|
|
|
bl.t("hsty", aW);
|
|
|
bl.t("file", aH);
|
|
|
bl.t("psmg", aK);
|
|
|
bl.t("wknf", aP);
|
|
|
bl.t("rqaf", aD);
|
|
|
bl.t("json", aR);
|
|
|
bl.t("flsc", a6);
|
|
|
bl.t("i18n", ak);
|
|
|
bl.t("cors", Z);
|
|
|
bl.t("prog", W);
|
|
|
bl.t("metr", aU);
|
|
|
bl.t("becn", bc);
|
|
|
bl.t("mcrd", T);
|
|
|
bl.t("esrc", aq)
|
|
|
}
|
|
|
};
|
|
|
var R = bj.alog.tracker("feature");
|
|
|
R.on("commit", function() {
|
|
|
ag.runAllTest();
|
|
|
var bl = setInterval(function() {
|
|
|
if ("WebP-lossy" in ag.f && "WebP-lossless" in ag.f && "WebP-alpha" in ag.f && "WebP-animation" in ag.f) {
|
|
|
for (var bm in ag.f) {
|
|
|
ag.f[bm] = ag.f[bm] ? "y" : "n"
|
|
|
}
|
|
|
R.send("feature", ag.f);
|
|
|
clearInterval(bl)
|
|
|
}
|
|
|
}, 500)
|
|
|
});
|
|
|
bj.alog("feature.create", {
|
|
|
dv: 4,
|
|
|
postUrl: az,
|
|
|
page: aZ ? aZ : aJ,
|
|
|
p: ab
|
|
|
});
|
|
|
bj.alog("feature.fire", "commit")
|
|
|
}
|
|
|
}(N, L, M)
|
|
|
}(window, document, u);
|
|
|
u._alog = u.alog || function() {};
|
|
|
u.alog("cus.fire", "count", "z_loadscriptcount");
|
|
|
if (location.protocol === "https:") {
|
|
|
u.alog("cus.fire", "count", "z_httpscount")
|
|
|
}
|
|
|
|
|
|
function s(L, M) {
|
|
|
for (var N in M) {
|
|
|
L[N] = M[N]
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function c(L) {
|
|
|
this.map = L;
|
|
|
this.tileLayers = [];
|
|
|
this.bufferNumber = 30;
|
|
|
this.realBufferNumber = 0;
|
|
|
this.curViewTiles = {};
|
|
|
this.bufferTiles = {};
|
|
|
this.layersContainer = this.createLayersContainer();
|
|
|
this.initialize()
|
|
|
}
|
|
|
J.extend(c.prototype, {
|
|
|
createLayersContainer: function() {
|
|
|
var L = document.createElement("div");
|
|
|
L.style.cssText = "position:absolute;left:0;top:0;z-index:0;";
|
|
|
this.map.platform.appendChild(L);
|
|
|
return L
|
|
|
},
|
|
|
initialize: function() {
|
|
|
var L = this;
|
|
|
var M = this.map;
|
|
|
M.addEventListener("onload", function() {
|
|
|
L.loadBaseTileLayer()
|
|
|
});
|
|
|
M.addEventListener("oncenterzoomend", function() {
|
|
|
L.reDrawCurViewTiles()
|
|
|
});
|
|
|
M.addEventListener("addtilelayer", function(N) {
|
|
|
L.addTileLayer(N)
|
|
|
});
|
|
|
M.addEventListener("removetilelayer", function(N) {
|
|
|
L.removeTileLayer(N)
|
|
|
});
|
|
|
M.addEventListener("moving", function(N) {
|
|
|
L.reDrawCurViewTiles()
|
|
|
});
|
|
|
M.addEventListener("zoomstart", function(P) {
|
|
|
if (P.evtSrc === "zoomTo") {
|
|
|
if (this._zoomMapByAnimation) {
|
|
|
var O = new j(this.width / 2, this.height / 2);
|
|
|
var N = this.zoomLevel;
|
|
|
this._zoomMapByAnimation(this, O, N)
|
|
|
} else {
|
|
|
L.reDrawCurViewTiles()
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
M.addEventListener("zoomend", function(N) {
|
|
|
L.reDrawCurViewTiles()
|
|
|
});
|
|
|
M.addEventListener("resize", function(N) {
|
|
|
L.reDrawCurViewTiles()
|
|
|
})
|
|
|
},
|
|
|
loadBaseTileLayer: function() {
|
|
|
var M = this.map;
|
|
|
if (!M.loaded) {
|
|
|
var N = new l();
|
|
|
var L = M.config.mapStyle ? e : H;
|
|
|
J.extend(N, L);
|
|
|
M.addTileLayer(N);
|
|
|
M.loaded = true
|
|
|
}
|
|
|
},
|
|
|
addTileLayer: function(P) {
|
|
|
var O = this.map;
|
|
|
var M = P.target;
|
|
|
for (var N = 0, L = this.tileLayers.length; N < L; N++) {
|
|
|
if (this.tileLayers[N] === M) {
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
this.tileLayers.push(M);
|
|
|
M.initialize(O, this.layersContainer);
|
|
|
this.reDrawCurViewTiles()
|
|
|
},
|
|
|
removeTileLayer: function(S) {
|
|
|
var R = this;
|
|
|
var N = S.target;
|
|
|
var L = R.curViewTiles;
|
|
|
var P = R.bufferTiles;
|
|
|
for (var Q in P) {
|
|
|
var M = Q.split("-")[1];
|
|
|
if (M == N.guid) {
|
|
|
delete P[Q]
|
|
|
}
|
|
|
}
|
|
|
for (var Q in L) {
|
|
|
var M = Q.split("-")[1];
|
|
|
if (M == N.guid) {
|
|
|
delete L[Q]
|
|
|
}
|
|
|
}
|
|
|
N.remove();
|
|
|
for (var O = this.tileLayers.length - 1; O >= 0; O--) {
|
|
|
if (this.tileLayers[O] === N) {
|
|
|
this.tileLayers.splice(O, 1)
|
|
|
}
|
|
|
}
|
|
|
R.reDrawCurViewTiles()
|
|
|
},
|
|
|
getTileName: function(L, M) {
|
|
|
return "TILE-" + M.guid + "-" + L[0] + "-" + L[1] + "-" + L[2]
|
|
|
},
|
|
|
reDrawCurViewTiles: function() {
|
|
|
var V = this.tileLayers.length;
|
|
|
if (V <= 0) {
|
|
|
return
|
|
|
}
|
|
|
var an = this.map;
|
|
|
var M = an.getZoom();
|
|
|
var ad = an.centerPoint;
|
|
|
var U = an.getZoomUnits(M);
|
|
|
var O = an.getTileUnits(M);
|
|
|
var W = Math.ceil(ad.lat / O);
|
|
|
var R = Math.ceil(ad.lng / O);
|
|
|
var Z = an.config.tileSize;
|
|
|
var P = [W, R, (ad.lat - W * O) / O * Z, (ad.lng - R * O) / O * Z];
|
|
|
var ak = an.width;
|
|
|
var ab = an.height;
|
|
|
var ai = P[0] - Math.ceil((ab / 2 - P[2]) / Z);
|
|
|
var N = P[1] - Math.ceil((ak / 2 - P[3]) / Z);
|
|
|
var af = P[0] + Math.ceil((ab / 2 + P[2]) / Z);
|
|
|
var Y = P[1] + Math.ceil((ak / 2 + P[3]) / Z);
|
|
|
var X = this.tileLayers;
|
|
|
var aa = this.curViewTiles;
|
|
|
var L = [];
|
|
|
for (var ae = 0, aj = X.length; ae < aj; ae++) {
|
|
|
var ap = X[ae];
|
|
|
o.css3TransformDom(ap.tilesDiv, Math.round(-an.offsetX + ak / 2), Math.round(-an.offsetY + ab / 2));
|
|
|
for (var am in aa) {
|
|
|
var ao = aa[am];
|
|
|
var al = ao.info;
|
|
|
if (al[2] !== M || (al[2] === M && (ai > al[0] || af <= al[0] || N > al[1] || Y <= al[1]))) {
|
|
|
this.hideTile(ao)
|
|
|
}
|
|
|
}
|
|
|
L.length = 0;
|
|
|
for (var ah = ai; ah < af; ah++) {
|
|
|
for (var ag = N; ag < Y; ag++) {
|
|
|
L.push([ah, ag])
|
|
|
}
|
|
|
}
|
|
|
L.sort((function(aq) {
|
|
|
return function(ar, at) {
|
|
|
return ((0.4 * Math.abs(ar[1] - aq[1]) + 0.6 * Math.abs(ar[0] - aq[0])) - (0.4 * Math.abs(at[1] - aq[1]) +
|
|
|
0.6 * Math.abs(at[0] - aq[0])))
|
|
|
}
|
|
|
})([P[0] - 1, P[1] - 1]));
|
|
|
var T = -ad.lng / U;
|
|
|
var S = ad.lat / U;
|
|
|
var Q = [Math.round(S), Math.round(T)];
|
|
|
for (var ah = 0, ac = L.length; ah < ac; ah++) {
|
|
|
this.showTile([L[ah][0], L[ah][1], M], Q, ap, Z)
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
showTile: function(Q, P, T, V) {
|
|
|
var N = this.getTileName(Q, T);
|
|
|
var O = (Q[1] * V) + P[1];
|
|
|
var M = (-1 - Q[0]) * V + P[0];
|
|
|
var U = this.curViewTiles[N];
|
|
|
if (U && U.img) {
|
|
|
o.css3TransformDom(U.img, O, M);
|
|
|
return
|
|
|
}
|
|
|
U = this.bufferTiles[N];
|
|
|
if (U && U.img) {
|
|
|
T.tilesDiv.insertBefore(U.img, T.tilesDiv.lastChild);
|
|
|
this.curViewTiles[N] = U;
|
|
|
o.css3TransformDom(U.img, O, M);
|
|
|
return
|
|
|
}
|
|
|
var R = new j(Q[1], Q[0]);
|
|
|
var L = T.getTilesUrl(R, Q[2]);
|
|
|
var S = [O, M];
|
|
|
U = new b(this, L, S, Q, T, V);
|
|
|
this.curViewTiles[N] = U
|
|
|
},
|
|
|
hideTile: function(M) {
|
|
|
var L = M.img;
|
|
|
if (L) {
|
|
|
if (o.isInDocument(L)) {
|
|
|
L.parentNode.removeChild(L)
|
|
|
}
|
|
|
}
|
|
|
delete this.curViewTiles[M.name];
|
|
|
if (!M.loaded) {
|
|
|
L = null;
|
|
|
M.img = null;
|
|
|
M.mgr = null
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function l(L) {
|
|
|
this.opts = L || {};
|
|
|
this.baseLayer = this.opts.baseLayer || false;
|
|
|
this.zIndex = this.opts.zIndex || 0;
|
|
|
this.guid = l._guid++
|
|
|
}
|
|
|
l._guid = 0;
|
|
|
J.lang.inherits(l, J.lang.Class, "TileLayer");
|
|
|
J.extend(l.prototype, {
|
|
|
initialize: function(N, L) {
|
|
|
if (this.baseLayer) {
|
|
|
this.zIndex = -1
|
|
|
}
|
|
|
this.map = N;
|
|
|
if (!this.tilesDiv) {
|
|
|
var O = o.create("div");
|
|
|
var M = O.style;
|
|
|
M.cssText = "position:absolute;left:0;top:0;z-index:" + this.zIndex;
|
|
|
L.appendChild(O);
|
|
|
this.tilesDiv = O
|
|
|
}
|
|
|
},
|
|
|
remove: function() {
|
|
|
if (this.tilesDiv && this.tilesDiv.parentNode) {
|
|
|
this.tilesDiv.innerHTML = "";
|
|
|
this.tilesDiv.parentNode.removeChild(this.tilesDiv)
|
|
|
}
|
|
|
delete this.tilesDiv
|
|
|
},
|
|
|
getTilesUrl: function(M, N) {
|
|
|
var L = "";
|
|
|
if (this.opts.tileUrlTemplate) {
|
|
|
L = this.opts.tileUrlTemplate.replace(/\{X\}/, M.x);
|
|
|
L = L.replace(/\{Y\}/, M.y);
|
|
|
L = L.replace(/\{Z\}/, N)
|
|
|
}
|
|
|
return L
|
|
|
},
|
|
|
getTileVersion: function(M) {
|
|
|
var N = window.TILE_VERSION;
|
|
|
var L = "20170730";
|
|
|
if (N && N.ditu) {
|
|
|
var O = N.ditu;
|
|
|
if (O[M] && O[M]["updateDate"]) {
|
|
|
L = O[M]["updateDate"]
|
|
|
}
|
|
|
}
|
|
|
return L
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function b(R, L, N, M, O, T) {
|
|
|
this.mgr = R;
|
|
|
this.position = N;
|
|
|
this.name = R.getTileName(M, O);
|
|
|
this.info = M;
|
|
|
var S = o.create("img");
|
|
|
o.setUnSelectable(S);
|
|
|
S.galleryImg = false;
|
|
|
var Q = S.style;
|
|
|
Q.cssText = "position:absolute;width:" + T + "px;height:" + T + "px;left:0;top:0;";
|
|
|
o.css3TransformDom(S, N[0], N[1]);
|
|
|
this.img = S;
|
|
|
this.src = L;
|
|
|
this.errorImgSrc = u.apiUrlCdn + "/images/blank.gif";
|
|
|
var P = this;
|
|
|
P.img.onload = function() {
|
|
|
P.loaded = true;
|
|
|
if (!P.mgr) {
|
|
|
return
|
|
|
}
|
|
|
var V = P.mgr;
|
|
|
var U = V.bufferTiles;
|
|
|
if (!U[P.name]) {
|
|
|
V.realBufferNumber++;
|
|
|
U[P.name] = P
|
|
|
}
|
|
|
if (P.img && !o.isInDocument(P.img) && O.tilesDiv) {
|
|
|
O.tilesDiv.appendChild(P.img)
|
|
|
}
|
|
|
var X = V.realBufferNumber - V.bufferNumber;
|
|
|
for (var Y in U) {
|
|
|
if (X <= 0) {
|
|
|
break
|
|
|
}
|
|
|
if (!V.curViewTiles[Y]) {
|
|
|
var W = U[Y].img;
|
|
|
if (W && W.parentNode) {
|
|
|
W.parentNode.removeChild(W)
|
|
|
}
|
|
|
W = null;
|
|
|
U[Y].img = null;
|
|
|
U[Y].mgr = null;
|
|
|
delete U[Y];
|
|
|
V.realBufferNumber--;
|
|
|
X--
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
P.img.onerror = function() {
|
|
|
var V = P.img;
|
|
|
var W = V ? V.getAttribute("errorCount") : true;
|
|
|
if (V && (!W || W && W < 5)) {
|
|
|
W = W || 0;
|
|
|
W++;
|
|
|
V.src = L;
|
|
|
V.setAttribute("errorCount", W)
|
|
|
} else {
|
|
|
if (!P.mgr) {
|
|
|
return
|
|
|
}
|
|
|
var U = P.mgr;
|
|
|
P.img.src = P.errorImgSrc;
|
|
|
if (P.img && !o.isInDocument(P.img)) {
|
|
|
O.tilesDiv.appendChild(P.img)
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
P.img.src = L
|
|
|
}
|
|
|
var H = new l({
|
|
|
baseLayer: true
|
|
|
});
|
|
|
H.getTilesUrl = function(N, P) {
|
|
|
var S = N.x;
|
|
|
var O = N.y;
|
|
|
var Q = u.url.domain["TILE_ONLINE_URLS"];
|
|
|
var R = "x=" + S + "&y=" + O + "&z=" + P + "&styles=pl&scaler=2";
|
|
|
var M = u.url.proto + Q[Math.abs(S + O) % Q.length] + "/tile/?qt=vtile&" + R;
|
|
|
var L = this.getTileVersion("normal");
|
|
|
M += "&udt=" + L;
|
|
|
return M.replace(/-(\d+)/gi, "M$1")
|
|
|
};
|
|
|
var e = new l({
|
|
|
baseLayer: true
|
|
|
});
|
|
|
e.getTilesUrl = function(O, T) {
|
|
|
var M = this.map;
|
|
|
var U = O.x;
|
|
|
var P = O.y;
|
|
|
var S = u.url.domain["main_domain_cdn"]["baidu"];
|
|
|
var Q = "x=" + U + "&y=" + P + "&z=" + T + "&scale=2";
|
|
|
var N = u.url.proto + S[Math.abs(U + P) % S.length] + "/customimage/tile/?" + Q;
|
|
|
var R = this.getTileVersion("normal");
|
|
|
N += "&udt=" + R;
|
|
|
var L = this.getStyleParam();
|
|
|
N += L;
|
|
|
return N.replace("{x}", U).replace("{y}", P).replace("{z}", T)
|
|
|
};
|
|
|
e.getStyleParam = function() {
|
|
|
var M = this.map.config.mapStyle;
|
|
|
var N = "&";
|
|
|
if (M.style) {
|
|
|
N = N + "customid=" + M.style
|
|
|
} else {
|
|
|
if (M.styleJson) {
|
|
|
var L = this.styleJson2styleString(M.styleJson);
|
|
|
N = N + "styles=" + encodeURIComponent(L)
|
|
|
}
|
|
|
}
|
|
|
return N
|
|
|
};
|
|
|
e.styleJson2styleString = function(L) {
|
|
|
var Q = {
|
|
|
featureType: "t",
|
|
|
elementType: "e",
|
|
|
visibility: "v",
|
|
|
color: "c",
|
|
|
lightness: "l",
|
|
|
saturation: "s",
|
|
|
weight: "w",
|
|
|
zoom: "z",
|
|
|
hue: "h"
|
|
|
};
|
|
|
var S = {
|
|
|
all: "all",
|
|
|
geometry: "g",
|
|
|
"geometry.fill": "g.f",
|
|
|
"geometry.stroke": "g.s",
|
|
|
labels: "l",
|
|
|
"labels.text.fill": "l.t.f",
|
|
|
"labels.text.stroke": "l.t.s",
|
|
|
"lables.text": "l.t",
|
|
|
"labels.icon": "l.i"
|
|
|
};
|
|
|
var T = [];
|
|
|
for (var M = 0, R; R = L[M]; M++) {
|
|
|
var O = R.stylers;
|
|
|
delete R.stylers;
|
|
|
J.extend(R, O);
|
|
|
var N = [];
|
|
|
for (var P in Q) {
|
|
|
if (R[P]) {
|
|
|
if (P === "elementType") {
|
|
|
N.push(Q[P] + ":" + S[R[P]])
|
|
|
} else {
|
|
|
N.push(Q[P] + ":" + R[P])
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (N.length > 2) {
|
|
|
T.push(N.join("|"))
|
|
|
}
|
|
|
}
|
|
|
return T.join(",")
|
|
|
};
|
|
|
|
|
|
function a() {
|
|
|
this.map = null;
|
|
|
this._overlays = {};
|
|
|
this._customOverlays = []
|
|
|
}
|
|
|
J.extend(a.prototype, {
|
|
|
draw: function(L) {
|
|
|
for (var M in this._overlays) {
|
|
|
this._overlays[M].draw(L)
|
|
|
}
|
|
|
J.array.each(this._customOverlays, function(N) {
|
|
|
N.draw(L)
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
u.register(function(M) {
|
|
|
M.overlayDiv = document.createElement("div");
|
|
|
M.overlayDiv.style.cssText = "position:absolute;z-index:100;left:0;top:0;width:0;height:0;";
|
|
|
M._panes.markerPane = document.createElement("div");
|
|
|
M._panes.markerPane.style.cssText = "position:absolute;z-index:100;left:0;top:0;width: 0;height: 0;";
|
|
|
M.overlayDiv.appendChild(M._panes.markerPane);
|
|
|
M.platform.appendChild(M.overlayDiv);
|
|
|
var L = new a();
|
|
|
L.map = M;
|
|
|
M._overlays = L._overlays;
|
|
|
M._customOverlays = L._customOverlays;
|
|
|
M.addEventListener("load", function(N) {
|
|
|
L.draw(N)
|
|
|
});
|
|
|
M.addEventListener("moveend", function(N) {
|
|
|
L.draw(N)
|
|
|
});
|
|
|
M.addEventListener("zooming", function(N) {
|
|
|
L.draw(N)
|
|
|
});
|
|
|
M.addEventListener("zoomend", function(N) {
|
|
|
L.draw(N)
|
|
|
});
|
|
|
M.addEventListener("oncenterzoomend", function(N) {
|
|
|
L.draw(N)
|
|
|
});
|
|
|
M.addEventListener("resize", function(N) {
|
|
|
L.draw(N)
|
|
|
});
|
|
|
M.addEventListener("addoverlay", function(R) {
|
|
|
var O = R.target;
|
|
|
if (O instanceof I) {
|
|
|
if (!L._overlays[O.guid]) {
|
|
|
L._overlays[O.guid] = O
|
|
|
}
|
|
|
} else {
|
|
|
var Q = false;
|
|
|
for (var P = 0, N = L._customOverlays.length; P < N; P++) {
|
|
|
if (L._customOverlays[P] === O) {
|
|
|
Q = true;
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
if (!Q) {
|
|
|
L._customOverlays.push(O)
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
M.addEventListener("removeoverlay", function(Q) {
|
|
|
var O = Q.target;
|
|
|
if (O instanceof I) {
|
|
|
delete L._overlays[O.guid]
|
|
|
} else {
|
|
|
for (var P = 0, N = L._customOverlays.length; P < N; P++) {
|
|
|
if (L._customOverlays[P] === O) {
|
|
|
L._customOverlays.splice(P, 1);
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
M.addEventListener("clearoverlays", function(Q) {
|
|
|
for (var P in L._overlays) {
|
|
|
if (L._overlays[P]._config.enableMassClear) {
|
|
|
L._overlays[P].remove();
|
|
|
delete L._overlays[P]
|
|
|
}
|
|
|
}
|
|
|
for (var N = L._customOverlays.length, O = N - 1; O >= 0; O--) {
|
|
|
if (L._customOverlays[O].enableMassClear !== false) {
|
|
|
L._customOverlays[O].remove();
|
|
|
L._customOverlays[O] = null;
|
|
|
L._customOverlays.splice(O, 1)
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
});
|
|
|
|
|
|
function E() {
|
|
|
this._type = "overlay"
|
|
|
}
|
|
|
J.lang.inherits(E, J.lang.Class, "Overlay");
|
|
|
E.getZIndex = function(L) {
|
|
|
L = L * 1;
|
|
|
if (!L) {
|
|
|
return 0
|
|
|
}
|
|
|
return (L * -100000) << 1
|
|
|
};
|
|
|
J.extend(E.prototype, {
|
|
|
_i: function(L) {
|
|
|
if (!this.domElement && J.lang.isFunction(this.initialize)) {
|
|
|
this.domElement = this.initialize(L);
|
|
|
if (this.domElement) {
|
|
|
this.domElement.style.WebkitUserSelect = "none"
|
|
|
}
|
|
|
}
|
|
|
this.draw()
|
|
|
},
|
|
|
initialize: function(L) {
|
|
|
throw "initialize方法未实现"
|
|
|
},
|
|
|
draw: function() {
|
|
|
throw "draw方法未实现"
|
|
|
},
|
|
|
remove: function() {
|
|
|
if (this.domElement && this.domElement.parentNode) {
|
|
|
this.domElement.parentNode.removeChild(this.domElement)
|
|
|
}
|
|
|
this.domElement = null;
|
|
|
this.dispatchEvent(new F("onremove"))
|
|
|
},
|
|
|
hide: function() {
|
|
|
if (this.domElement) {
|
|
|
J.dom.hide(this.domElement)
|
|
|
}
|
|
|
},
|
|
|
show: function() {
|
|
|
if (this.domElement) {
|
|
|
J.dom.show(this.domElement)
|
|
|
}
|
|
|
},
|
|
|
isVisible: function() {
|
|
|
if (!this.domElement) {
|
|
|
return false
|
|
|
}
|
|
|
if (this.domElement.style.display == "none" || this.domElement.style.visibility == "hidden") {
|
|
|
return false
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function I() {
|
|
|
J.lang.Class.call(this);
|
|
|
E.call(this);
|
|
|
this.map = null;
|
|
|
this._visible = true
|
|
|
}
|
|
|
J.lang.inherits(I, E, "OverlayInternal");
|
|
|
J.extend(I.prototype, {
|
|
|
initialize: function(L) {
|
|
|
this.map = L;
|
|
|
J.lang.Class.call(this, this.guid);
|
|
|
return null
|
|
|
},
|
|
|
getMap: function() {
|
|
|
return this.map
|
|
|
},
|
|
|
draw: function() {},
|
|
|
remove: function() {
|
|
|
this.map = null;
|
|
|
J.lang.decontrol(this.guid);
|
|
|
E.prototype.remove.call(this)
|
|
|
},
|
|
|
hide: function() {
|
|
|
if (this._visible == false) {
|
|
|
return
|
|
|
}
|
|
|
this._visible = false
|
|
|
},
|
|
|
show: function() {
|
|
|
if (this._visible == true) {
|
|
|
return
|
|
|
}
|
|
|
this._visible = true
|
|
|
},
|
|
|
isVisible: function() {
|
|
|
if (!this.domElement) {
|
|
|
return false
|
|
|
}
|
|
|
return !!this._visible
|
|
|
},
|
|
|
getContainer: function() {
|
|
|
return this.domElement
|
|
|
},
|
|
|
setConfig: function(M) {
|
|
|
M = M || {};
|
|
|
for (var L in M) {
|
|
|
this._config[L] = M[L]
|
|
|
}
|
|
|
},
|
|
|
setZIndex: function(L) {
|
|
|
this.zIndex = L
|
|
|
},
|
|
|
enableMassClear: function() {
|
|
|
this._config.enableMassClear = true
|
|
|
},
|
|
|
disableMassClear: function() {
|
|
|
this._config.enableMassClear = false
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function h(M, N, Q) {
|
|
|
var P = this.dpr = 2;
|
|
|
if (!M || !N) {
|
|
|
return
|
|
|
}
|
|
|
Q = Q || {};
|
|
|
N.width = N.width / P;
|
|
|
N.height = N.height / P;
|
|
|
if (Q.anchor && Q.anchor instanceof d) {
|
|
|
Q.anchor.width = Q.anchor.width / P;
|
|
|
Q.anchor.height = Q.anchor.height / P
|
|
|
}
|
|
|
if (Q.imageOffset && Q.imageOffset instanceof d) {
|
|
|
Q.imageOffset.width = Math.floor(Q.imageOffset.width / P);
|
|
|
Q.imageOffset.height = Math.floor(Q.imageOffset.height / P)
|
|
|
}
|
|
|
if (Q.backGroundImageSize && Q.backGroundImageSize instanceof d) {
|
|
|
Q.backGroundImageSize.width = Math.floor(Q.backGroundImageSize.width / P);
|
|
|
Q.backGroundImageSize.height = Math.floor(Q.backGroundImageSize.height / P)
|
|
|
}
|
|
|
this.size = N;
|
|
|
this.imageUrl = M;
|
|
|
var L = new d(Math.floor(N.width / 2), N.height);
|
|
|
var O = new d(N.width, N.height);
|
|
|
var R = {
|
|
|
anchor: L,
|
|
|
imageOffset: new d(0, 0),
|
|
|
backGroundImageSize: O
|
|
|
};
|
|
|
J.extend(R, Q);
|
|
|
this.anchor = R.anchor;
|
|
|
this.imageOffset = R.imageOffset;
|
|
|
this.backGroundImageSize = R.backGroundImageSize
|
|
|
}
|
|
|
J.extend(h.prototype, {
|
|
|
setImageUrl: function(L) {
|
|
|
if (!L) {
|
|
|
return
|
|
|
}
|
|
|
this.imageUrl = L
|
|
|
},
|
|
|
setSize: function(L) {
|
|
|
if (!L) {
|
|
|
return
|
|
|
}
|
|
|
this.size = new d(L.width / this.dpr, L.height / this.dpr)
|
|
|
},
|
|
|
setAnchor: function(L) {
|
|
|
if (!L) {
|
|
|
return
|
|
|
}
|
|
|
this.anchor = new d(L.width / this.dpr, L.height / this.dpr)
|
|
|
},
|
|
|
setImageOffset: function(L) {
|
|
|
if (!L) {
|
|
|
return
|
|
|
}
|
|
|
this.imageOffset = new d(L.width / this.dpr, L.height / this.dpr)
|
|
|
},
|
|
|
getHTML: function() {
|
|
|
var L = '<img style="position:absolute;padding:0;margin:0;border:0;left:' + this.imageOffset.width + "px;top:" +
|
|
|
this.imageOffset.height + "px;width:" + this.backGroundImageSize.width + "px;height:" + this.backGroundImageSize
|
|
|
.height + 'px;"src="' + this.imageUrl + '"/>';
|
|
|
return L
|
|
|
},
|
|
|
setBackGroundImageSize: function(L) {
|
|
|
if (!L) {
|
|
|
return
|
|
|
}
|
|
|
this.backGroundImageSize = new d(L.width / this.dpr, L.height / this.dpr)
|
|
|
},
|
|
|
toString: function() {
|
|
|
return "Icon"
|
|
|
}
|
|
|
});
|
|
|
var D = new h(u.apiUrlCdn + "/images/hd_red_marker.png", new d(47, 50));
|
|
|
|
|
|
function z(L, M) {
|
|
|
I.call(this);
|
|
|
M = M || {};
|
|
|
this.point = L;
|
|
|
this.map = null;
|
|
|
this._config = {
|
|
|
offset: new d(0, 0),
|
|
|
icon: D,
|
|
|
baseZIndex: 0,
|
|
|
clickable: true,
|
|
|
isTop: false,
|
|
|
enableMassClear: true
|
|
|
};
|
|
|
this.setConfig(M);
|
|
|
if (o.isDefined(M.enableClicking)) {
|
|
|
this._config.clickable = M.enableClicking
|
|
|
}
|
|
|
this._loadAsyncCode()
|
|
|
}
|
|
|
J.lang.inherits(z, I, "Marker");
|
|
|
J.extend(z.prototype, {
|
|
|
_loadAsyncCode: function() {
|
|
|
var L = this;
|
|
|
p.load("marker", function() {
|
|
|
L._loadAsyncCodeCbk()
|
|
|
})
|
|
|
},
|
|
|
setIcon: function(L) {
|
|
|
if (L instanceof h) {
|
|
|
this._config.icon = L
|
|
|
}
|
|
|
},
|
|
|
getIcon: function() {
|
|
|
return this._config.icon
|
|
|
},
|
|
|
getPosition: function() {
|
|
|
return this.point
|
|
|
},
|
|
|
setPosition: function(L) {
|
|
|
if (L instanceof w) {
|
|
|
this.point = new w(L.lng, L.lat)
|
|
|
}
|
|
|
},
|
|
|
setTop: function(M, L) {
|
|
|
this._config.isTop = !!M;
|
|
|
if (M) {
|
|
|
this._addi = L || 0
|
|
|
}
|
|
|
},
|
|
|
setOffset: function(L) {
|
|
|
if (L instanceof d) {
|
|
|
this._config.offset = L
|
|
|
}
|
|
|
},
|
|
|
getOffset: function() {
|
|
|
return this._config.offset
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function x() {
|
|
|
this._map = null;
|
|
|
this._container;
|
|
|
this._type = "control";
|
|
|
this._visible = true
|
|
|
}
|
|
|
J.lang.inherits(x, J.lang.Class, "Control");
|
|
|
J.extend(x.prototype, {
|
|
|
initialize: function(L) {
|
|
|
this._map = L;
|
|
|
if (this._container) {
|
|
|
L.container.appendChild(this._container);
|
|
|
return this._container
|
|
|
}
|
|
|
return
|
|
|
},
|
|
|
_i: function(L) {
|
|
|
if (!this._container && this.initialize && J.lang.isFunction(this.initialize)) {
|
|
|
this._container = this.initialize(L)
|
|
|
}
|
|
|
this._opts = this._opts || {};
|
|
|
this._setStyle();
|
|
|
this._setPosition();
|
|
|
if (this._container) {
|
|
|
this._container._jsobj = this
|
|
|
}
|
|
|
},
|
|
|
_setStyle: function() {
|
|
|
var N = this._container;
|
|
|
if (N) {
|
|
|
var L = N.style;
|
|
|
var M = this._container.style.zIndex || 10;
|
|
|
L.position = "absolute";
|
|
|
L.zIndex = M
|
|
|
}
|
|
|
},
|
|
|
remove: function() {
|
|
|
this._map = null;
|
|
|
if (!this._container) {
|
|
|
return
|
|
|
}
|
|
|
this._container.parentNode && this._container.parentNode.removeChild(this._container);
|
|
|
this._container._jsobj = null;
|
|
|
this._container = null
|
|
|
},
|
|
|
_render: function() {
|
|
|
this._container = o.beforeEndHTML(this._map.container, "<div></div>");
|
|
|
if (this._visible == false) {
|
|
|
J.dom.hide(this._container)
|
|
|
}
|
|
|
return this._container
|
|
|
},
|
|
|
_setPosition: function() {
|
|
|
this.setAnchor(this._opts.anchor)
|
|
|
},
|
|
|
setAnchor: function(N) {
|
|
|
if (this.anchorFixed || !J.lang.isNumber(N) || isNaN(N) || N < BMAP_ANCHOR_TOP_LEFT || N >
|
|
|
BMAP_ANCHOR_BOTTOM_RIGHT) {
|
|
|
N = this.defaultAnchor
|
|
|
}
|
|
|
this._opts = this._opts || {};
|
|
|
this._opts.offset = this._opts.offset || this.defaultOffset;
|
|
|
var M = this._opts.anchor;
|
|
|
this._opts.anchor = N;
|
|
|
if (!this._container) {
|
|
|
return
|
|
|
}
|
|
|
var P = this._container;
|
|
|
var L = this._opts.offset.width;
|
|
|
var O = this._opts.offset.height;
|
|
|
switch (N) {
|
|
|
case BMAP_ANCHOR_TOP_LEFT:
|
|
|
P.style.top = O + "px";
|
|
|
P.style.left = L + "px";
|
|
|
break;
|
|
|
case BMAP_ANCHOR_TOP_RIGHT:
|
|
|
P.style.top = O + "px";
|
|
|
P.style.right = L + "px";
|
|
|
break;
|
|
|
case BMAP_ANCHOR_BOTTOM_LEFT:
|
|
|
P.style.bottom = O + "px";
|
|
|
P.style.left = L + "px";
|
|
|
break;
|
|
|
case BMAP_ANCHOR_BOTTOM_RIGHT:
|
|
|
P.style.bottom = O + "px";
|
|
|
P.style.right = L + "px";
|
|
|
break;
|
|
|
default:
|
|
|
break
|
|
|
}
|
|
|
},
|
|
|
getAnchor: function() {
|
|
|
return this._opts.anchor
|
|
|
},
|
|
|
setOffset: function(L) {
|
|
|
if (!(L instanceof d)) {
|
|
|
return
|
|
|
}
|
|
|
this._opts = this._opts || {};
|
|
|
this._opts.offset = new d(L.width, L.height);
|
|
|
if (!this._container) {
|
|
|
return
|
|
|
}
|
|
|
this.setAnchor(this._opts.anchor)
|
|
|
},
|
|
|
getOffset: function() {
|
|
|
return this._opts.offset
|
|
|
},
|
|
|
getDom: function() {
|
|
|
return this._container
|
|
|
},
|
|
|
show: function() {
|
|
|
this._visible = true;
|
|
|
if (this._container) {
|
|
|
J.dom.show(this._container)
|
|
|
}
|
|
|
},
|
|
|
hide: function() {
|
|
|
this._visible = false;
|
|
|
if (this._container) {
|
|
|
J.dom.hide(this._container)
|
|
|
}
|
|
|
},
|
|
|
isVisible: function() {
|
|
|
if (!this._container && !this._map) {
|
|
|
return false
|
|
|
}
|
|
|
return !!this._visible
|
|
|
}
|
|
|
});
|
|
|
window.BMAP_ANCHOR_TOP_LEFT = 0;
|
|
|
window.BMAP_ANCHOR_TOP_RIGHT = 1;
|
|
|
window.BMAP_ANCHOR_BOTTOM_LEFT = 2;
|
|
|
window.BMAP_ANCHOR_BOTTOM_RIGHT = 3;
|
|
|
|
|
|
function y(L) {
|
|
|
x.call(this);
|
|
|
L = L || {};
|
|
|
this._opts = {};
|
|
|
this._opts = J.object.extend(J.object.extend(this._opts, {
|
|
|
color: "black",
|
|
|
unit: "metric"
|
|
|
}), L);
|
|
|
this.defaultAnchor = BMAP_ANCHOR_BOTTOM_LEFT;
|
|
|
this.defaultOffset = new d(20, 10);
|
|
|
this.setAnchor(L.anchor);
|
|
|
this._units = {
|
|
|
metric: {
|
|
|
name: "metric",
|
|
|
conv: 1,
|
|
|
incon: 1000,
|
|
|
u1: "米",
|
|
|
u2: "公里"
|
|
|
}
|
|
|
};
|
|
|
if (!this._units[this._opts.unit]) {
|
|
|
this._opts.unit = "metric"
|
|
|
}
|
|
|
this._scaleText = null;
|
|
|
this._numberArray = {};
|
|
|
this._loadAsyncCode()
|
|
|
}
|
|
|
J.lang.inherits(y, x, "ScaleControl");
|
|
|
J.object.extend(y.prototype, {
|
|
|
_loadAsyncCode: function() {
|
|
|
var L = this;
|
|
|
p.load("control", function() {
|
|
|
L._loadAsyncCodeCbk()
|
|
|
})
|
|
|
},
|
|
|
initialize: function(L) {
|
|
|
this._map = L;
|
|
|
return this._container
|
|
|
},
|
|
|
setColor: function(L) {
|
|
|
this._opts.color = L + ""
|
|
|
},
|
|
|
getColor: function() {
|
|
|
return this._opts.color
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function C(L) {
|
|
|
x.call(this);
|
|
|
L = L || {};
|
|
|
this._opts = {};
|
|
|
this._opts = J.object.extend(this._opts, L);
|
|
|
this.defaultAnchor = BMAP_ANCHOR_BOTTOM_RIGHT;
|
|
|
this.defaultOffset = new u.Size(8, 14);
|
|
|
this.setAnchor(L.anchor)
|
|
|
}
|
|
|
J.lang.inherits(C, x, "ZoomControl");
|
|
|
J.object.extend(C.prototype, {
|
|
|
initialize: function(M) {
|
|
|
this._map = M;
|
|
|
var O = this._container = document.createElement("div");
|
|
|
O.style.cssText = "box-shadow:1px 1px 2px rgba(0,0,0,.4);background:rgba(255,255,255,.8);border-radius: 3px;";
|
|
|
var L = this._zoomIn = document.createElement("div");
|
|
|
L.style.cssText = "width:36px;height:42px;text-align:center;line-height:42px;font-family:arial;color:#000;";
|
|
|
L.innerHTML =
|
|
|
'<div style="font-size:24px;border-bottom:solid 1px #ccc;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events: none;">+</div>';
|
|
|
var N = this._zoomOut = document.createElement("div");
|
|
|
N.style.cssText = "width:36px;height:42px;text-align:center;line-height:42px;font-family:arial;color:#000;";
|
|
|
N.innerHTML =
|
|
|
'<div style="font-size:40px;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;">-</div>';
|
|
|
O.appendChild(L);
|
|
|
O.appendChild(N);
|
|
|
M.getContainer().appendChild(O);
|
|
|
this.bindEvt();
|
|
|
return O
|
|
|
},
|
|
|
bindEvt: function() {
|
|
|
var L = this;
|
|
|
var M = L._map;
|
|
|
L._zoomIn.onclick = function() {
|
|
|
M.zoomIn();
|
|
|
L.zoomChangeHandler()
|
|
|
};
|
|
|
L._zoomOut.onclick = function() {
|
|
|
M.zoomOut();
|
|
|
L.zoomChangeHandler()
|
|
|
};
|
|
|
L._zoomIn.ontouchstart = function() {
|
|
|
this.style.background = "rgba(94,169,221,.8)"
|
|
|
};
|
|
|
L._zoomIn.ontouchend = function() {
|
|
|
this.style.background = ""
|
|
|
};
|
|
|
L._zoomOut.ontouchstart = function() {
|
|
|
this.style.background = "rgba(94,169,221,.8)"
|
|
|
};
|
|
|
L._zoomOut.ontouchend = function() {
|
|
|
this.style.background = ""
|
|
|
};
|
|
|
L.zoomChangeHandler = function() {
|
|
|
if (M.getZoom() >= M.config.maxZoom) {
|
|
|
L._zoomIn.style.background = "rgba(205,205,205,.8)"
|
|
|
} else {
|
|
|
L._zoomIn.style.background = ""
|
|
|
}
|
|
|
if (M.getZoom() <= M.config.minZoom) {
|
|
|
L._zoomOut.style.background = "rgba(205,205,205,.8)"
|
|
|
} else {
|
|
|
L._zoomOut.style.background = ""
|
|
|
}
|
|
|
};
|
|
|
M.addEventListener("zoomend", L.zoomChangeHandler);
|
|
|
M.addEventListener("centerzoomend", L.zoomChangeHandler);
|
|
|
M.addEventListener("load", L.zoomChangeHandler)
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function k(L) {
|
|
|
this["defaultAnchor"] = BMAP_ANCHOR_BOTTOM_LEFT;
|
|
|
this["defaultOffset"] = new d(1, 1);
|
|
|
this._cZIndex = 30;
|
|
|
this.IMG_URL = u.apiUrlCdn + "images/copyright_logo_hd.png"
|
|
|
}
|
|
|
k.prototype = new x();
|
|
|
k.prototype.initialize = function(M) {
|
|
|
this._map = M;
|
|
|
var N = o.create("div");
|
|
|
var L = o.create("a", {
|
|
|
title: "到百度地图查看此区域",
|
|
|
target: "_blank",
|
|
|
href: "http://map.baidu.com/?sr=1"
|
|
|
});
|
|
|
L.style.outline = "none";
|
|
|
N.style.height = "25px";
|
|
|
L.href = "http://map.baidu.com/?sr=1";
|
|
|
L.innerHTML = "<img style='border:none;width:68px;height:25px' src='" + this.IMG_URL + "' />";
|
|
|
N.appendChild(L);
|
|
|
M.getContainer().appendChild(N);
|
|
|
return N
|
|
|
};
|
|
|
var K = new h(u.apiUrlCdn + "/images/hd_red_marker.png", new d(47, 50));
|
|
|
|
|
|
function q(L, M) {
|
|
|
J.lang.Class.call(this);
|
|
|
M = M || {};
|
|
|
this.point = L;
|
|
|
this._opts = {
|
|
|
icon: K,
|
|
|
data: "",
|
|
|
margin: 0
|
|
|
};
|
|
|
this._opts = J.object.extend(this._opts, M)
|
|
|
}
|
|
|
J.lang.inherits(q, J.lang.Class, "MassFeature");
|
|
|
J.extend(q.prototype, {
|
|
|
getData: function() {
|
|
|
return this._opts.data
|
|
|
},
|
|
|
getIcon: function() {
|
|
|
return this._opts.icon
|
|
|
},
|
|
|
getPosition: function() {
|
|
|
return this.point
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function t(L) {
|
|
|
this._map = L;
|
|
|
this._asyncCodeLoaded = false;
|
|
|
this._massFeatures = [];
|
|
|
this._IconCache = {};
|
|
|
this._needLoadImgNumber = 0
|
|
|
}
|
|
|
u.register(function(M) {
|
|
|
var L = new t(M);
|
|
|
L.initialize()
|
|
|
});
|
|
|
J.extend(t.prototype, {
|
|
|
initialize: function() {
|
|
|
var M = this._map;
|
|
|
var L = this;
|
|
|
M.addEventListener("addmassfeatures", function(Q) {
|
|
|
var N = Q.massFeatures;
|
|
|
for (var S = 0, P = N.length; S < P; S++) {
|
|
|
var R = N[S];
|
|
|
var O = R.guid;
|
|
|
if (!L._massFeatures[O]) {
|
|
|
L._massFeatures[O] = 1;
|
|
|
L._massFeatures.push(R)
|
|
|
}
|
|
|
}
|
|
|
L._loadAsyncCode(function() {
|
|
|
L.drawMassFeatures(true)
|
|
|
})
|
|
|
});
|
|
|
M.addEventListener("removemassfeatures", function(Q) {
|
|
|
var N = Q.massFeatures;
|
|
|
for (var S = 0, P = N.length; S < P; S++) {
|
|
|
for (var R = L._massFeatures.length - 1; R >= 0; R--) {
|
|
|
if (N[S].guid === L._massFeatures[R].guid) {
|
|
|
var O = L._massFeatures[R].guid;
|
|
|
L._massFeatures.splice(R, 1);
|
|
|
delete L._massFeatures[O];
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
L._loadAsyncCode(function() {
|
|
|
L.drawMassFeatures()
|
|
|
})
|
|
|
});
|
|
|
M.addEventListener("clearmassfeatures", function(N) {
|
|
|
L._massFeatures.length = 0;
|
|
|
for (var O in L._massFeatures) {
|
|
|
delete L._massFeatures[O]
|
|
|
}
|
|
|
L._loadAsyncCode(function() {
|
|
|
L.drawMassFeatures()
|
|
|
})
|
|
|
})
|
|
|
},
|
|
|
_loadAsyncCode: function(L) {
|
|
|
var M = this;
|
|
|
p.load("massfeatures", function() {
|
|
|
if (!M._asyncCodeLoaded) {
|
|
|
M._loadAsyncCodeCbk()
|
|
|
}
|
|
|
L && L()
|
|
|
}, true)
|
|
|
}
|
|
|
});
|
|
|
u.verify();
|
|
|
})();
|
|
|
})();
|