window.qq = window.qq || {};
qq.maps = qq.maps || {};
window.soso || (window.soso = qq);
soso.maps || (soso.maps = qq.maps);
(function() {
    function getScript(src) {
        var protocol = (window.location.protocol == "https:") ? "https://" : "http://";
        src = src && (src.indexOf("http://") === 0 || src.indexOf("https://") === 0) ? src : protocol + src;
        document.write('<' + 'script src="' + src + '"' + ' type="text/javascript"><' + '/script>');
    }
    qq.maps.__load = function(apiLoad) {
        delete qq.maps.__load;
        apiLoad([
            ["2.4.128", "27VBZ-5ZYKW-AZTRS-O234W-SU342-HRFR5", 0],
            ["https://3gimg.qq.com/", "lightmap/api_v2/2/4/128/mods/", "https://3gimg.qq.com/lightmap/api_v2/2/4/128/theme/", true],
            [1, 18, 34.519469, 104.461761, 4],
            [1584257293846, "https://pr.map.qq.com/pingd", "https://pr.map.qq.com/pingd"],
            ["https://apis.map.qq.com/jsapi", "https://apikey.map.qq.com/mkey/index.php/mkey/check", "https://sv.map.qq.com/xf", "https://sv.map.qq.com/boundinfo", "https://sv.map.qq.com/rarp", "https://apis.map.qq.com/api/proxy/search", "https://apis.map.qq.com/api/proxy/routes/", "https://confinfo.map.qq.com/confinfo", "https://overseactrl.map.qq.com"],
            [
                [null, ["https://rt0.map.gtimg.com/tile", "https://rt1.map.gtimg.com/tile", "https://rt2.map.gtimg.com/tile", "https://rt3.map.gtimg.com/tile"], "png", [256, 256], 3, 19, "114", true, false],
                [null, ["https://m0.map.gtimg.com/hwap", "https://m1.map.gtimg.com/hwap", "https://m2.map.gtimg.com/hwap", "https://m3.map.gtimg.com/hwap"], "png", [128, 128], 3, 18, "110", false, false],
                [null, ["https://p0.map.gtimg.com/sateTiles", "https://p1.map.gtimg.com/sateTiles", "https://p2.map.gtimg.com/sateTiles", "https://p3.map.gtimg.com/sateTiles"], "jpg", [256, 256], 1, 19, "101", false, false],
                [null, ["https://rt0.map.gtimg.com/tile", "https://rt1.map.gtimg.com/tile", "https://rt2.map.gtimg.com/tile", "https://rt3.map.gtimg.com/tile"], "png", [256, 256], 1, 19, "", false, false],
                [null, ["https://sv0.map.qq.com/hlrender/", "https://sv1.map.qq.com/hlrender/", "https://sv2.map.qq.com/hlrender/", "https://sv3.map.qq.com/hlrender/"], "png", [256, 256], 1, 19, "", false, false],
                [null, ["https://rtt2.map.qq.com/rtt/", "https://rtt2a.map.qq.com/rtt/", "https://rtt2b.map.qq.com/rtt/", "https://rtt2c.map.qq.com/rtt/"], "png", [256, 256], 1, 19, "", false, false], null, [
                    ["https://rt0.map.gtimg.com/vector/", "https://rt1.map.gtimg.com/vector/", "https://rt2.map.gtimg.com/vector/", "https://rt3.map.gtimg.com/vector/"],
                    [256, 256], 3, 18, "114", ["https://rt0.map.gtimg.com/icons/", "https://rt1.map.gtimg.com/icons/", "https://rt2.map.gtimg.com/icons/", "https://rt3.map.gtimg.com/icons/"],
                    []
                ], null
            ],
            ["https://s.map.qq.com/TPano/v1.1.2/TPano.js", "map.qq.com/", ""]
        ], loadScriptTime);
    };
    var loadScriptTime = (new Date).getTime();


})();
(function() {
    "use strict";

    function Uh(a, b) {
        var c;
        ld ? c = Vh(a).__events_ : (a.__events_ || (a.__events_ = {}), c = a.__events_);
        c[b] || (c[b] = {});
        return c[b]
    }

    function Vh(a) {
        var b;
        a && a.__oid_ && (b = S.eventObjects[a.__oid_]);
        !b && a && (a.__oid_ = ++Kj, b = { __events_: {} }, S.eventObjects[a.__oid_] = b);
        return b
    }

    function Md(a, b) {
        var c, e = {};
        if (ld) { if (c = Vh(a)) e = c.__events_ } else e = a.__events_ || {};
        if (b) c = e[b] || {};
        else
            for (b in c = {}, e) Lj(c, e[b]);
        return c
    }

    function Mj(a) {
        return function() {
            var b = a.handler;
            return a.bindHandler = function(c) {
                if ((c = c || window.event) && !c.target) try { c.target = c.srcElement } catch (e) {}
                var x = b.apply(a.instance, [c]);
                return c && "click" == c.type && (c = c.srcElement) && "A" == c.tagName && "javascript:void(0)" == c.href ? !1 : x
            }
        }()
    }

    function Nj(a) { a.returnValue = !0 }

    function Wh(a, b, c) {
        return function() {
            for (var e = [b, a], x = arguments.length, d = 0; d < x; ++d) e.push(arguments[d]);
            S.trigger.apply(this, e);
            c && Nj.apply(null, arguments)
        }
    }

    function Oj(a, b) {
        return function() {
            var c = Array.prototype.slice.call(arguments, 0);
            c.push(this);
            b.apply(a, c)
        }
    }

    function cc(a, b, c, e) {
        this.instance = a;
        this.eventName = b;
        this.handler = c;
        this.bindHandler = null;
        this.browser = e;
        this.id = ++Pj;
        Uh(a, b)[this.id] = this;
        ld && "tagName" in a && (S.listeners[this.id] = this)
    }

    function Qj() {
        for (var a = window.navigator.userAgent, b = "Android;iPhone;iPad;iPod;SymbianOS;Windows Phone".split(";"), c = !0, e = 0; e < b.length; e++)
            if (0 < a.indexOf(b[e])) { c = !1; break }
        return c
    }

    function dg(a) { this.grids = a }

    function Rj(a, b) {
        for (var c = "https:" == window.location.protocol ? "https://" : "http://", e = 1; e < a.length; e++) {
            var x = a[e];
            if (x) switch (e) {
                case 1:
                    x[0] && !gb(x[0]) && (a[e][0] = c + x[0]);
                    x[2] && !gb(x[2]) && (a[e][2] = c + x[2]);
                    break;
                case 3:
                    x[1] && !gb(x[1]) && (a[e][1] = c + x[1]);
                    x[2] && !gb(x[2]) && (a[e][2] = c + x[2]);
                    break;
                case 4:
                    a[e] = Kc(x, c);
                    break;
                case 5:
                    for (var d = 0; d < x.length; d++) {
                        var f = x[d];
                        f && (7 === d ? (a[e][d][0] = Kc(f[0], c), a[e][d][5] = Kc(f[5], c), a[e][d][6] = Kc(f[6], c)) : a[e][d][1] = Kc(f[1], c))
                    }
                    break;
                case 6:
                    x[0] && !gb(x[0]) && (a[e][0] = c + x[0]), x[1] && !gb(x[1]) && (a[e][1] = c + x[1])
            }
        }
        Xh[0] = a;
        Yh[1] = b
    }

    function gb(a) { return a && (0 === a.indexOf("http://") || 0 === a.indexOf("https://")) }

    function Kc(a, b) { for (var c = 0; c < a.length; c++) a[c] && !gb(a[c]) && (a[c] = b + a[c]); return a }

    function Sj() {
        for (var a = 0; a < Nd.length; a++)
            if (Nd[a] === this) { Nd.splice(a, 1); break }
    }

    function Zh(a) {
        for (var b = Tj, c = 0; Lc[c];)
            if (b -= Lc[c][2], 0 <= b) c++;
            else break;
        0 == c ? Lc.length && Lc.shift() : (b = Lc.splice(0, c), 0 < b.length && Uj(b, a), 0 < Lc.length && Zh(a))
    }

    function Uj(a, b) {
        var c = [eg];
        c.push("logid=" + (b ? 2 : 1));
        Vj(a, function(a) { c.push(a[0] + "=" + a[1]) });
        var e = c.join("&");
        Wj(e)
    }

    function Xj(a, b) {
        if (Yj(a))
            for (var c in a) {
                if (a.hasOwnProperty(c)) {
                    var e = a[c] + "";
                    Lc.push([c, e, c.length + e + 2])
                }
            } else Zj(b) || (b += ""), Lc.push([a, b, a.length + b.length + 2])
    }

    function Je(a) {
        $h.trigger(Od, "submit", Xj, a);
        Zh(a)
    }

    function fg(a, b) {
        -180 == a && 180 != b && (a = 180); - 180 == b && 180 != a && (b = 180);
        this.minX = a;
        this.maxX = b
    }

    function ai(a, b) {
        this.minY = a;
        this.maxY = b
    }

    function F(a, b) {
        this.x = a;
        this.y = b
    }

    function lc(a, b, c, e, x, d) {
        this.latLng = a;
        this.pixel = b;
        this.cursorPixel = d || b;
        this.type = c;
        this.target = e;
        this.__event__ = x
    }

    function Sb(a) { return a.__o_accessors_ || (a.__o_accessors_ = {}) }

    function nd(a, b) {
        var c = Ke(b);
        a[c] ? a[c]() : a.changed(b);
        var c = Ke(b.toLowerCase()),
            e = new ak(void 0, void 0, c, a, void 0);
        dc.trigger(a, c, e)
    }

    function bk(a, b, c, e, x) {
        Sb(a)[b] = { target: c, targetKey: e };
        x || nd(a, b)
    }

    function od(a) { a.__o_bindings_ || (a.__o_bindings_ = {}); return a.__o_bindings_ }

    function Ke(a) { return bi[a] || (bi[a] = a + "_changed") }

    function h() {}

    function ck(a) { this.a = a }

    function p(a, b, c) {
        a = Number(a);
        b = Number(b);
        c || (a = dk(a, -ci, ci), b = ek(b, -180, 180));
        this.lat = a;
        this.lng = b
    }

    function pd(a) {
        a = 256 * (a || 1);
        this.a = new pe(a / 2, a / 2);
        this.b = a / 360;
        this.c = a / (2 * Math.PI);
        this.d = !0
    }

    function Le(a) { this.size = 256 * (a || 1) }

    function fk() {}

    function di() { "complete" == zb.readyState && (zb.detachEvent("onreadystatechange", di), oa.fireReady()) }

    function gg() {
        zb.removeEventListener("DOMContentLoaded", gg, !1);
        oa.fireReady()
    }

    function gk(a, b) {
        var c = document.getElementsByTagName("head")[0],
            e = '<script src="' + a + '" ' + Me + '="this.ownerDocument.z = 1"></script>',
            x = Ne.createElement("iframe");
        x.style.display = "none";
        c.appendChild(x);
        var d = x.contentDocument;
        x.onload = function() {
            1 != d.z && b && b();
            x.onload = null;
            c.removeChild(this)
        };
        try { d.write(e), d.close() } catch (f) {}
        c = null
    }

    function hk(a, b, c, e, x, d) {
        var f = Ne.createElement("script");
        Oe.push({ name: a, sender: f });
        f.setAttribute("type", "text/javascript");
        f.setAttribute("charset", x || "GBK");
        f.async = !0;
        var g = null,
            h = !1;
        f[Me] = function() { ik.test(this.readyState) && (Pd(a), g ? c && c(g) : h || e && e()) };
        qe[a] = function(a) { g = a };
        f.onerror = function() {
            h = !0;
            e && e();
            Pd(a)
        };
        x = d || ["output=jsonp", "pf=jsapi", "ref=jsapi"];
        d ? (d = x.pop(), x.push(d + hg + "." + a)) : (x.push("cb=" + hg + "." + a), ei && x.unshift("key=" + ei));
        d = b + (-1 === b.indexOf("?") ? "?" : "&") + x.join("&");
        f.src = d;
        jk && gk(b, function() { f.onerror() });
        b = document.getElementsByTagName("head")[0];
        b.insertBefore(f, b.firstChild);
        b = null
    }

    function Pd(a) {
        if (a) {
            for (var b = 0, c = Oe.length, e = null; b < c; b++)
                if (Oe[b].name === a) { e = Oe.splice(b, 1)[0]; break }
            e && (b = e.sender, b.clearAttributes && b.clearAttributes(), b[Me] = b.onerror = null, b.parentNode && b.parentNode.removeChild(b));
            qe[a] && delete qe[a]
        }
    }

    function Qd(a) {
        this.callback = a;
        this.tasks = {};
        this.id = 0
    }

    function ca(a, b, c, e) {
        this.width = a;
        this.height = b
    }

    function fi(a, b) {
        for (var c = {}, e = 0, x = a.length; e < x; e += 2) {
            var d = a[e + 1];
            kk(d) && b ? c[a[e]] = fi(d, b) : c[a[e]] = d
        }
        return c
    }

    function lk(a) {
        if ("object" != typeof a || !a) return "" + a;
        a.__sm_id || (a.__sm_id = ++mk);
        return "" + a.__sm_id
    }

    function Rd(a) {
        this.hash = a || lk;
        this.items = {};
        this.length = 0
    }

    function nk(a) { return function() { return this.get(a) } }

    function ok(a, b) {
        return b ? function(c) {
            b(c) || pk(a, c);
            this.set(a, c)
        } : function(b) { this.set(a, b) }
    }

    function qd() {}

    function Mc(a) { this.scale = a }

    function Tb(a) {
        this.elems = a || [];
        this.set("length", this.elems.length)
    }

    function Ab(a, b) {
        a && !b && (b = a);
        if (a) {
            var c = ig(a.getLat(), -90, 90),
                e = ig(b.getLat(), -90, 90);
            this.lat = new Pe(c, e);
            c = a.getLng();
            e = b.getLng();
            360 <= e - c ? this.lng = new Nc(-180, 180) : (c = jg(c, -180, 180), e = jg(e, -180, 180), this.lng = new Nc(c, e))
        } else this.lat = new Pe(1, -1), this.lng = new Nc(180, -180)
    }

    function sb(a, b) {
        sf(a) && (a = document.getElementById(a));
        var c = this;
        b = b || {};
        qk(b.mapTypeId) && (b.mapTypeId = "roadmap");
        b.noClear && rk(a);
        b.scale && (b.scale = Math.max(Math.round(b.scale), 1));
        sk(this, b, tf);
        c.container = a;
        c.mapTypes = new tk(c.scale);
        c.mapStyles = new uk;
        c.overlays = new vk;
        c.overlayMapTypes = new gi;
        c.V = new wk;
        c.tileVersion = !1;
        c.createImpl = !1;
        c.constructImpl = !1;
        var e = c.controls = [];
        xk(yk, function(a) { e[a] = new gi });
        c.options = b;
        var d = this.center.getLat(),
            f = this.center.getLng();
        zk.set(d + "," + f + "," + this.zoom);
        Ak(1, 0);
        var g = new Bk(function() { c.createImpl && (c.constructImpl ? c.mapControl(c).updateMap() : (c.mapControl(c).construct(b), c.constructImpl = !0)) });
        g.addTask(Ck, [c.mapStyleId], function(a) { c.customStyleId = a || kg.DEFAULT });
        g.addTask(Dk, [], function() {});
        g.doTasks();
        T.$require("map", function(a) {
            g.isAllDone() && !c.constructImpl && (a(c).construct(b), c.constructImpl = !0);
            c.mapControl = a;
            c.createImpl = !0
        }, 0);
        Ek(c)
    }

    function Rc(a) {
        return function() {
            var b = [].slice.call(arguments);
            b.splice(0, 0, this.V, a);
            var c = this;
            T.$require("map", function(a) {
                c.constructImpl || (c.constructImpl = !0, a(c).construct(c.options));
                lg.trigger.apply(lg, b)
            }, 0)
        }
    }

    function Sc(a) { a && this.setValues(a) }

    function Nb(a, b, c, e) {
        this.red = a;
        this.green = b;
        this.blue = c;
        this.alpha = 0 <= parseInt(e) ? e : 1
    }

    function uf(a) {
        var b = null;
        mg(a) ? ng(a.getAt(0)) ? (b = new ec, a.forEach(function(a) { b.push(uf(a)) })) : b = a : ng(a) && (b = new ec, Fk(a, function(a) { ng(a) ? b.push(uf(a)) : b.push(a) }));
        return b
    }

    function Tc(a) {
        a = Gk(a, ["fillColor", new Va(38, 145, 234, .2), "strokeColor", new Va(38, 145, 234, 1), "strokeWeight", 2, "strokeDashStyle", "solid", "zIndex", 0, "cursor", "pointer", "clickable", !0, "simplify", !0, "visible", !0, "strokeLinecap", "default"]);
        this.set("path", new ec);
        this.setValues(a);
        T.$require("poly", Hk(this), 1)
    }

    function og(a) {
        a.filled = !1;
        hi.call(this, a)
    }

    function pg(a) {
        a.filled = !0;
        ii.call(this, a)
    }

    function Qe(a) {
        a = Ik(a, ["map", null, "center", null, "radius", 0, "bounds", null, "fillColor", new vc(38, 145, 234, .2), "strokeColor", new vc(38, 145, 234, 1), "strokeWeight", 4, "strokeDashStyle", "solid", "zIndex", 0, "cursor", "pointer", "clickable", !0, "simplify", !0, "visible", !0]);
        this.setValues(a);
        T.$require("poly", Jk(this), 2)
    }

    function qg(a) {
        a = a || {};
        a.delay = a.delay || 0;
        a.duration = a.duration || 0;
        this.setValues(a);
        this.status = -1
    }

    function Re(a) {
        var b = this;
        Kk && T.$require("eb", function(c) { new c(b, a) });
        Lk && (document.body.addEventListener ? T.$require("ea", function(c) { new c(b, a) }) : T.$require("ec", function(c) { new c(b, a) }));
        this.start()
    }

    function Uc(a) {
        a = Mk(a || {}, { complete: null, error: null, map: null, panel: null });
        this.setOptions(a)
    }

    function vf(a) {
        a = Nk(a, ["markers", new Ok, "map", null, "zoomOnClick", !0, "gridSize", 60, "averageCenter", !1, "maxZoom", 18, "minimumClusterSize", 2], !0);
        this.setValues(a);
        Pk(this)(Qk)
    }

    function fc(a) {
        a = Rk(a, ["icon", null, "shadow", null, "shape", null, "decoration", null, "cursor", "pointer", "title", "", "animation", null, "clickable", !0, "draggable", !1, "visible", !0, "flat", !1, "zIndex", 0, "useDefaults", !0, "height", 0, "position", null, "autoRotation", !1, "rotation", 0]);
        this.setValues(a);
        T.$require("marker", Sk(this))
    }

    function wc(a) {
        return function() {
            var b = [].slice.call(arguments);
            b.splice(0, 0, this, a);
            T.$require("marker", function() { rg.trigger.apply(rg, b) })
        }
    }

    function Ob(a, b) {
        ji(a) && (a = document.getElementById(a));
        var c = this;
        b = b || {};
        c.container = a;
        var e = this.controls = [];
        Tk(Uk, function(a) { e[a] = new Vk });
        Wk(this, b, Xk);
        c._labels = new Yk;
        c.V = new Zk;
        $k(0, 1);
        T.$require("pano", function(a) { a(c) }, 0)
    }

    function ki(a) {
        return function() {
            var b = [].slice.call(arguments);
            b.splice(0, 0, this.V, a);
            T.$require("pano", function() { sg.trigger.apply(sg, b) }, 0)
        }
    }

    function rd(a) { a && this.setValues(a) }

    function sd() { T.$require("layers", al, 1) }

    function tg(a, b, c) { gc.send(a, b, c) }

    function Se() {}

    function Sd(a) {
        a = bl(a, { complete: null, error: null, location: "\u5168\u56fd", policy: cl.REAL_TRAFFIC });
        this.setOptions(a);
        T.$require("sv", dl(this), 6)
    }

    function Bc(a) {
        a = el(a, { complete: null, error: null, location: "\u5168\u56fd", policy: fl.LEAST_TIME });
        this.setOptions(a);
        T.$require("sv", gl(this), 5)
    }

    function td(a) {
        a = hl(a, { complete: null, error: null });
        this.setOptions(a);
        T.$require("sv", il(this), 4)
    }

    function ud(a) {
        a = jl(a, { complete: null, error: null });
        this.setOptions(a);
        T.$require("sv", kl(this), 3)
    }

    function Te(a) {
        var b = this;
        ll.addListenerOnce(this, "dosend_changed", function() { T.$require("sv", ml(b), 2) });
        ug.call(b, a)
    }

    function Ue(a) {
        var b = this;
        nl.addListenerOnce(this, "dosend_changed", function() { T.$require("sv", ol(b), 1) });
        li.call(b, a)
    }

    function vd(a) {
        a = pl(a || {}, { location: null, pageIndex: 0, pageCapacity: 10 });
        var b = this;
        ql.addListenerOnce(this, "dosend_changed", function() { T.$require("sv", rl(b), 0) });
        vg.call(this, a)
    }

    function Td() { T.$require("layers", sl, 0) }

    function wg(a) {
        this.opts = a = tl(a, ["style", ul.DEFAULT, "index", 0]);
        a.map && (this.map = a.map, this.setOptions(a))
    }

    function mi(a) {
        this.opts = a = vl(a, ["style", wf.DEFAULT, "index", 0, "margin", new wl(1, 2), "zoomTips", { 17: "\u8857", 11: "\u5e02", 8: "\u7701", 4: "\u56fd" }]);
        a.map && (this.map = a.map, this.setOptions(a))
    }

    function ni(a) {
        var b = a.map;
        if (b) {
            var c = {};
            xl(yl, function(b) { c[b] = a[b] });
            b.setOptions({ mapTypeControl: !0, mapTypeControlOptions: c })
        }
    }

    function Vc() {
        this.views = [];
        this.count = 0;
        this.renderNum = 15;
        this.anim = new zl({ duration: 500 });
        this.isRun = !1
    }

    function hb(a, b) {
        this._model = a;
        this._renderTimer = b || 0;
        a && (this._fdrawListener = Wc.addListener(this, "forceredraw", this.forcedraw, this), this.forwardEvents(["forceredraw"]))
    }

    function oi(a, b, c, e) {
        var d = new xg,
            f = !1,
            g = {};
        Ub(b, function(b) {
            d[b] = a.get(b);
            g[b] = 1
        });
        var h = function(a, b) {
            return e ? e(a, b) : function() {
                var b = !0;
                Ub(a, function(a) { if (!a) return b = !1 });
                return b
            }()
        };
        d.changed = function(a) {
            if (!(f || a && !g[a])) {
                var e = [];
                Ub(b, function(a) { e.push(d.get(a)) });
                h(e, b) && (f = !0, delete d.changed, d.unbindAll(b), c())
            }
        };
        d.bindsTo(b, a)
    }

    function re(a) {
        this.a = {};
        this.setOptions(a)
    }

    function pi(a) {
        if (a)
            for (var b = a.childNodes, c = 0, e = b.length; c < e; c++) a.removeChild(b[c])
    }

    function xf(a) {
        a = Al(a, ["map", null, "imageUrl", null, "bounds", null, "visible", !0, "clickable", !0, "zIndex", 0, "opacity", 1, "cursor", "pointer"]);
        this.setValues(a);
        T.$require("poly", Bl(this), 0)
    }

    function yf(a) {
        a = Cl(a, ["map", null, "position", null, "content", null, "visible", !0, "title", null, "zIndex", null, "offset", null, "style", null, "clickable", !0]);
        this.setValues(a);
        T.$require("label", Dl(this))
    }

    function Ve(a) {
        a = El(a, ["visible", !1, "content", "", "maxWidth", 760, "maxHeight", 840, "minWidth", 80, "minHeight", 30, "zIndex", 0, "noScroll", !1, "disableAutoPan", !1, "position", null]);
        this.setValues(a);
        yg.call(this, a);
        T.$require("infowin", Fl(this))
    }

    function qi(a) { zg.call(this, a || {}) }

    function zf(a) { ri.call(this, a || {}) }

    function Xc(a) { si.call(this, a || {}) }

    function Af(a) { Ag.apply(this, arguments) }

    function Ud(a) { ti.call(this, a) }

    function se(a) {
        a = Gl({ alt: "", name: "", maxZoom: null, minZoom: null, radius: 0, tileSize: null, opacity: 1, errorUrl: null, alpha: !1, poiLayer: !1 }, a || {}, !0);
        this.tileSize = a.tileSize;
        this.name = a.name;
        this.alt = a.alt;
        this.minZoom = a.minZoom;
        this.maxZoom = a.maxZoom;
        this.copyrights = a.copyrights;
        var b = new Hl,
            c = new Il(b);
        this.getTile = Yc(c.getTile, c);
        this.releaseTile = Yc(c.releaseTile, c);
        this.stop = Yc(c.stop, c);
        this.poiLayer = a.poiLayer;
        var e = Yc(a.getTileUrl, a);
        this.set("opacity", a.opacity);
        this._setScale(1);
        var d = this;
        T.$require("map", function(c) {
            c = new c(b, [{ func: e, type: 1, alpha: !!a.alpha, tqLogId: a.tqLogId }], null, a);
            c.bindTo("opacity", d);
            c.bindTo("scale", d)
        }, 1)
    }

    function Vd(a) {
        this.markerCluster = a;
        this.map = a.get("map");
        this.icon = new Jl;
        this.markers = [];
        var b = this;
        b.clickListener = ui.addListener(this.icon, "click", function() { b.markerCluster && b.markerCluster.doClusterClick(b) })
    }

    function Bf(a) {
        this.markers = a.get("markers");
        this.clusters = [];
        Bg.call(this, a);
        this.bindTo("map", a);
        a.clusterView = this
    }

    function Kl(a) {
        for (var b = [], c = 0, e = a.length; c < e; c++) b.push(Ll + a[c] + ".js");
        if (Ml) { a = []; for (c = Math.ceil(b.length / Cg); c--;) a.push(Nl + b.splice(0, Cg).join(",")); return a }
        c = 0;
        for (e = b.length; c < e; c++) b[c] = Ol + b[c];
        return b
    }

    function Pl(a, b) {
        if (a) return function() {--a || b() };
        b()
    }

    function Ql() {
        try {
            ib.forIn(function(a, c) {
                var e = c.match(RegExp(We + "([0-9a-z]*)_"));
                e && (e = e[1]) && e != Rl && ib.set(c, null)
            })
        } catch (a) {}
    }

    function vi(a) {
        if (!Dg[a]) {
            Dg[a] = !0;
            for (var b = Ya[a], c = b.length; c--;) vi(b[c]);
            Cf.push(a);
            Df || (Df = setTimeout(Sl, 0))
        }
    }

    function Tl(a) {
        var b = document.createElement("script");
        b.setAttribute("type", "text/javascript");
        b.setAttribute("src", a);
        b.setAttribute("charset", "utf-8");
        document.getElementsByTagName("head")[0].appendChild(b)
    }

    function Ul(a) {
        var b = [];
        if (ib.support())
            for (var c = 0; c < a.length; c++) {
                var e = a[c],
                    d = We + Eg.split(/\./).join("") + "_" + e;
                (d = ib.get(d)) ? wi(e, d): b.push(e)
            } else b = a;
        return b
    }

    function Sl() {
        Df = 0;
        var a = Cf;
        Cf = [];
        a.sort(function(a, b) { return a <= b });
        for (var a = Ul(a), a = Kl(a), b = a.length; b--;) Tl(a[b])
    }
    var Vl = function(a) {
            a = a || window.event;
            a.cancelBubble = !0;
            a.stopPropagation && a.stopPropagation()
        },
        wd = function(a) {
            a = a || window.event;
            a.returnValue = !1;
            a.preventDefault && a.preventDefault()
        },
        Ef = function(a) {
            wd(a);
            Vl(a);
            return !1
        },
        Wl = Object.prototype.hasOwnProperty,
        Fg = function(a, b) { return Wl.call(a, b) },
        Gg = function(a) {
            for (var b in a)
                if (Fg(a, b)) return !1;
            return !0
        },
        xi = function(a, b, c) {
            var e = [],
                d = a.length;
            c = c || d;
            for (b = b || 0; b < c; b++) e.push(a[b]);
            return e
        },
        W = function(a, b) {
            for (var c in a)
                if (Fg(a, c) && !1 === b(a[c], c)) return !1
        },
        Cc = function(a, b) {
            var c = a.style;
            0 <= parseFloat(b) && 1 > parseFloat(b) ? (c.filter = "alpha(opacity=" + 100 * b + ")", c.opacity = b) : 1 == parseFloat(b) && (c.filter = "", c.opacity = "")
        },
        yi = {},
        Ff = function(a) { return yi[a] || (yi[a] = a.substr(0, 1).toUpperCase() + a.substr(1)) },
        R = function(a) { return "[object Function]" == Object.prototype.toString.call(a) },
        Wd = function(a, b) {
            b = b || document.createElement("div");
            a = "on" + a;
            b.setAttribute(a, "return;");
            return R(b[a]) || a in document.documentElement
        },
        Bb = navigator.userAgent,
        Na = /msie (\d+\.\d+)/i.test(Bb) ? document.documentMode || +RegExp.$1 : 0,
        Hg = function(a) { return !(!a || !(a.nodeName && 1 == a.nodeType)) },
        Ig = function(a) { return Hg(a) || a == window || a == document },
        Sa = function(a, b, c) {
            for (var e in b)
                if (b.hasOwnProperty(e) && (c || !a.hasOwnProperty(e))) a[e] = b[e];
            return a
        },
        Z = function(a, b) { if (2 < arguments.length) { var c = xi(arguments, 2); return function() { return a.apply(b || this, 0 < arguments.length ? c.concat(xi(arguments)) : c) } } return function() { return a.apply(b || this, arguments) } },
        Lj = Sa,
        ld = Na,
        S = { listeners: {}, eventObjects: {} },
        Kj = 0;
    S.addListener = function(a, b, c, e) {
        if (Ig(a)) return S.addDomListener(a, b, c, e);
        if ("click" == b && "Marker" == a.CLASS_NAME && !Qj()) {
            var d, f, g = function(a) { f = d ? { x: a.clientX, y: a.clientY } : d = { x: a.clientX, y: a.clientY } };
            b = S.addListener(a, "mousedown", function() {
                f = d = null;
                window.addEventListener("mousemove", g)
            }, 0);
            e = S.addListener(a, "mouseup", function(a) {
                d ? 9 > (f.x - d.x) * (f.x - d.x) + (f.y - d.y) * (f.y - d.y) && c(a) : c(a);
                window.removeEventListener("mousemove", g)
            }, 0);
            a = new cc(a, "__virtual_click", null, 0);
            a.pointTo = [b, e];
            return a
        }
        return new cc(a, b, c, 0)
    };
    S.exist = function(a, b) { var c = Md(a, b); return c && !Gg(c) };
    S.removeListener = function(a) {
        if ("__virtual_click" == a.eventName)
            for (var b = 0; b < a.pointTo.length; b++) a.pointTo[b].remove();
        else a.remove()
    };
    S.clearListeners = function(a, b) { W(Md(a, b), function(a, b) { a && a.remove() }) };
    S.clearInstanceListeners = function(a) { W(Md(a), function(a, c) { a && a.remove() }) };
    S.trigger = function(a, b) {
        if (S.exist(a, b)) {
            var c = xi(arguments, 2),
                e = Md(a, b);
            W(e, function(a) { a && a.handler.apply(a.instance, c) })
        } else if (Ig(a) && Wd(b, a))
            if (a.fireEvent) try { a.fireEvent("on" + b) } catch (d) {} else a.dispatchEvent && (e = document.createEvent("Events"), e.initEvent(b, !0, !0), a.dispatchEvent(e))
    };
    S.addDomListener = function(a, b, c, e) {
        var d = 0;
        a.addEventListener ? (d = e ? 4 : 1, a.addEventListener(b, c, e), c = new cc(a, b, c, d)) : a.attachEvent ? (c = new cc(a, b, c, e ? 3 : 2), a.attachEvent("on" + b, Mj(c)), e && a.setCapture && a.setCapture()) : (a["on" + b] = c, c = new cc(a, b, c, 5));
        return c
    };
    S.addDomListenerOnce = function(a, b, c, e) { var d = S.addDomListener(a, b, function() { d.remove(); return c.apply(this, arguments) }, e); return d };
    S.bindDom = function(a, b, c, e) { c = Oj(e, c); return S.addDomListener(a, b, c) };
    S.bind = function(a, b, c, e, d) { return d ? S.addListenerOnce(a, b, Z(c, e)) : S.addListener(a, b, Z(c, e)) };
    S.addListenerOnce = function(a, b, c) { var e = S.addListener(a, b, function() { e.remove(); return c.apply(this, arguments) }); return e };
    S.forward = function(a, b, c) { return S.addListener(a, b, Wh(b, c)) };
    S.forwardDom = function(a, b, c, e) { return S.addDomListener(a, b, Wh(b, c, !e)) };
    S.unload = function() {
        var a = S.listeners;
        W(a, function(a) { a && a.remove() });
        S.listeners = {};
        (a = window.CollectGarbage) && a()
    };
    var Pj = 0;
    cc.prototype.remove = function() {
        var a = this.instance,
            b = this.eventName;
        if (a) {
            switch (this.browser) {
                case 1:
                    a.removeEventListener(b, this.handler, !1);
                    break;
                case 4:
                    a.removeEventListener(b, this.handler, !0);
                    break;
                case 2:
                    a.detachEvent("on" + b, this.bindHandler);
                    break;
                case 3:
                    a.detachEvent("on" + b, this.bindHandler);
                    a.releaseCapture && a.releaseCapture();
                    break;
                case 5:
                    a["on" + b] = null
            }
            delete Uh(a, b)[this.id];
            a.__events_ && (Gg(a.__events_[b]) && delete a.__events_[b], Gg(a.__events_) && delete a.__events_);
            this.bindHandler = this.handler = this.instance = null;
            delete S.listeners[this.id]
        }
    };
    var d = S;
    dg.prototype.getTile = function(a, b, c, e, d) {
        c = c.createElement("div");
        a = { element: c, coord: a, zoom: b, instance: d };
        e && (e = e.parentNode.createElement("div"), a.poiElement = e);
        c.data = a;
        this.grids.insert(a);
        return c
    };
    dg.prototype.releaseTile = function(a) {
        var b = a.data;
        this.grids.remove(b);
        W(b, function(a, e) { delete b[e] });
        a.data = null
    };
    dg.prototype.stop = function(a) { d.trigger(a.data, "stop", a.data) };
    var Yh = [6378136.49, -1],
        Xh = [null, Yh],
        zi = window.qq && qq.maps && qq.maps.__load;
    zi && zi(Rj);
    var Ai = Xh,
        Bi = Ai[1],
        Zc = Bi[0],
        Xl = function(a, b) {
            for (var c = [a]; c.length;) {
                var e = c.shift();
                b(e);
                for (e = e.firstChild; e; e = e.nextSibling) 1 == e.nodeType && c.push(e)
            }
        },
        Jg = function(a) { Xl(a, function(a) { d.clearInstanceListeners(a) }) },
        Qa = function() { return new Date },
        xd = function() { return +Qa() },
        $a = Ai[0],
        kb = function(a) { return "[object Object]" === Object.prototype.toString.apply(a) },
        U = function(a) { return "[object String]" == Object.prototype.toString.call(a) },
        vb = $a[0][1],
        Nd = [],
        Yl = function(a) {
            var b = new Image;
            b.onload = b.onerror = b.onabort = Sj;
            Nd.push(b);
            b.src = a + ("&random=" + (+Qa()).toString(36))
        },
        g = function(a, b) {
            for (var c = 0, e = a.length; c < e; ++c)
                if (!1 === b(a[c], c)) return !1
        },
        Kg = $a[0][0],
        $h = d,
        Zj = U,
        Yj = kb,
        Vj = g,
        Wj = Yl,
        eg = $a[3][2] + "?appid=jsapi&v=" + Kg + "&key=" + vb,
        Tj = 1024 - eg.length - 16,
        Od = {},
        Lc = [];
    Od.submit = Je;
    $h.addDomListener(window, "beforeunload", function() { Je(!0) });
    setInterval(Je, 5e3);
    var Gf = Od,
        yd = new Function,
        te = [],
        Zl = d.addListener(Gf, "submit", function(a) {
            if (0 < te.length) {
                var b = te.join("|");
                a("m", b);
                te.length = 0;
                d.removeListener(Zl);
                Ci.set = yd
            }
        }),
        Ci = { set: function(a) { te.push(a) } },
        zk = Ci,
        Xd = [0, 0],
        $l = d.addListener(Gf, "submit", function(a) {
            if (0 != Xd[0] || 0 != Xd[1]) {
                var b = Xd.join(",");
                a("mp", b);
                Xd[0] = 0;
                Xd[1] = 0;
                d.removeListener($l);
                Di.set = yd
            }
        }),
        Di = {
            set: function(a, b) {
                0 != a && Xd[0]++;
                0 != b && Xd[1]++
            }
        },
        am = Di,
        ba = function(a) { return a * (Math.PI / 180) },
        bm = function(a, b) {
            var c = ba(a.getLat()) - ba(b.getLat()),
                e = ba(a.getLng()) - ba(b.getLng()),
                c = Math.sin(c / 2) * Math.sin(c / 2) + Math.cos(ba(b.getLat())) * Math.cos(ba(a.getLat())) * Math.sin(e / 2) * Math.sin(e / 2),
                c = 2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c));
            return Zc * c
        },
        Hf = function(a, b, c) { return a >= b && a <= c ? a : ((a - b) % (c - b) + (c - b)) % (c - b) + b },
        jb = fg.prototype;
    jb.isEmpty = function() { return 360 == this.minX - this.maxX };
    jb.intersects = function(a) {
        var b = this.minX,
            c = this.maxX;
        return this.isEmpty() || a.isEmpty() ? !1 : b > c ? a.minX > a.maxX || a.minX <= c || a.maxX >= b : a.minX > a.maxX ? a.minX <= c || a.maxX >= b : a.minX <= c && a.maxX >= b
    };
    jb.contains = function(a) {
        -180 == a && (a = 180);
        var b = this.minX,
            c = this.maxX;
        return this.minX > this.maxX ? (a >= b || a <= c) && !this.isEmpty() : a >= b && a <= c
    };
    jb.extend = function(a) { this.contains(a) || (this.isEmpty() ? this.minX = this.maxX = a : this.distance(a, this.minX) < this.distance(this.maxX, a) ? this.minX = a : this.maxX = a) };
    jb.equals = function(a) { return this.isEmpty() ? a.isEmpty() : 1e-9 >= Math.abs(a.minX - this.minX) % 360 + Math.abs(a.maxX - this.maxX) % 360 };
    jb.center = function() {
        var a = (this.minX + this.maxX) / 2;
        this.minX > this.maxX && (a = Hf(a, -180, 180));
        return a
    };
    jb.distance = function(a, b) { var c = b - a; return 0 <= c ? c : b + 180 - (a - 180) };
    var Vb = ai.prototype;
    Vb.isEmpty = function() { return this.minY > this.maxY };
    Vb.intersects = function(a) {
        var b = this.minY,
            c = this.maxY;
        return b <= a.minY ? a.minY <= c && a.minY <= a.maxY : b <= a.maxY && b <= c
    };
    Vb.contains = function(a) { return a >= this.minY && a <= this.maxY };
    Vb.extend = function(a) { this.isEmpty() ? this.maxY = this.minY = a : a < this.minY ? this.minY = a : a > this.maxY && (this.maxY = a) };
    Vb.equals = function(a) { return this.isEmpty() ? a.isEmpty() : 1e-9 >= Math.abs(a.minY - this.minY) + Math.abs(this.maxY - a.maxY) };
    Vb.center = function() { return (this.maxY + this.minY) / 2 };
    var Jn = 6 === Na || 7 === Na || 8 === Na,
        y = $a[5],
        cm = $a[4][7],
        Yd = function(a) { return a / (Math.PI / 180) },
        ga = F.prototype;
    ga.getX = function() { return this.x };
    ga.getY = function() { return this.y };
    ga.toString = function() { return this.x + ", " + this.y };
    ga.equals = function(a) { return !a ? !1 : a.x == this.x && a.y == this.y };
    ga.distanceTo = function(a) { return Math.sqrt(Math.pow(this.x - a.x, 2) + Math.pow(this.y - a.y, 2)) };
    ga.minus = function(a) { return new F(this.x - a.x, this.y - a.y) };
    ga.plus = function(a) { return new F(this.x + a.x, this.y + a.y) };
    ga.divide = function(a) { return new F(this.x / a, this.y / a) };
    ga.multiply = function(a) { return new F(this.x * a, this.y * a) };
    ga.dotProduct = function(a) { return this.x * a.x + this.y * a.y };
    ga.crossProduct = function(a) { return this.x * a.y - this.y * a.x };
    ga.clone = function() { return new F(this.x, this.y) };
    ga.getVectorLength = function() { return Math.sqrt(this.x * this.x + this.y * this.y) };
    var $c = null,
        If = function(a, b, c, e) {
            c = Math.pow(2, c);
            $c || ($c = new F(0, 0));
            $c.x = b.x / c;
            $c.y = b.y / c;
            return a.fromPointToLatLng($c, e)
        },
        zd = function(a, b, c) { if (a = a.fromLatLngToPoint(b)) c = Math.pow(2, c), a.x *= c, a.y *= c; return a };
    lc.prototype.stop = function() { this.__event__ && Ef(this.__event__) };
    var ya = function(a) { return "[object Array]" == Object.prototype.toString.call(a) },
        f = function(a, b) {
            function c() {}
            c.prototype = b.prototype;
            a.prototype = new c
        },
        dc = d,
        ak = lc,
        dm = function(a) {
            if (Object.keys) return Object.keys(a);
            var b = [];
            W(a, function(a, e) { b.push(e) });
            return b
        },
        Lg = {},
        Xe = {},
        bi = {},
        ob = h.prototype;
    ob.get = function(a) {
        var b = Sb(this)[a];
        if (b) {
            a = b.targetKey;
            var b = b.target,
                c = Lg[a] || (Lg[a] = "get" + Ff(a));
            return b[c] ? b[c]() : b.get(a)
        }
        return this[a]
    };
    ob.set = function(a, b) {
        var c = Sb(this);
        if (c.hasOwnProperty(a)) {
            var e = c[a],
                c = e.targetKey,
                e = e.target,
                d = Xe[c] || (Xe[c] = "set" + Ff(c));
            e[d] ? e[d](b) : e.set(c, b)
        } else this[a] = b, nd(this, a)
    };
    ob.notify = function(a) {
        var b = Sb(this);
        b.hasOwnProperty(a) ? (a = b[a], a.target.notify(a.targetKey)) : nd(this, a)
    };
    ob.setValues = function(a) {
        for (var b in a) {
            var c = a[b],
                e = Xe[b] || (Xe[b] = "set" + Ff(b));
            this[e] ? this[e](c) : this.set(b, c)
        }
    };
    ob.setOptions = ob.setValues;
    ob.changed = function(a) { return function() {} };
    ob.bindTo = function(a, b, c, e) {
        c = c || a;
        var d = this;
        d.unbind(a, !0);
        od(d)[a] = dc.addListener(b, Ke(c.toLowerCase()), function() { nd(d, a) });
        bk(d, a, b, c, e)
    };
    ob.bindsTo = function(a, b, c, e) {
        a = ya(a) ? a : dm(a);
        c = c || [];
        for (var d = 0, f = a.length; d < f; d++) this.bindTo(a[d], b, c[d] || null, e)
    };
    ob.unbind = function(a, b) {
        var c = od(this)[a];
        c && (delete od(this)[a], dc.removeListener(c), c = b && this.get(a), delete Sb(this)[a], b ? this[a] = c : nd(this, a))
    };
    ob.unbindAll = function(a) {
        a || (a = [], W(od(this), function(b, e) { a.push(e) }));
        var b = this;
        g(a, function(a) { b.unbind(a) })
    };
    f(ck, h);
    ck.prototype.mapType_changed = function() {
        var a = this.get("mapType"),
            a = a && a.projection || this.a,
            b = this.get("projection");
        a !== b && this.set("projection", a)
    };
    var Wb = function(a, b, c) { return a < b ? b : a > c ? c : a },
        ek = Hf,
        dk = Wb,
        Mg = function(a, b) { var c = Math.pow(10, b); return Math.round(a * c) / c },
        ci = 85.051128,
        Cb = p.prototype;
    Cb.toString = function() { return this.lat + ", " + this.lng };
    Cb.equals = function(a) { return !a ? !1 : 1e-10 >= Math.abs(this.lat - a.lat) && 1e-10 >= Math.abs(this.lng - a.lng) };
    Cb.getLat = function() { return this.lat };
    Cb.getLng = function() { return this.lng };
    Cb.toUrlValue = function(a) { a = a || 6; return Mg(this.lng, a) + "," + Mg(this.lat, a) };
    Cb.clone = function() { return new p(this.lat, this.lng, !0) };
    Cb.distanceTo = function(a) { return bm(this, a) };
    Cb.subtract = function(a) { return new p(this.lat - a.lat, this.lng - a.lng) };
    var Ei = Math.PI / 180,
        Ng = 180 / Math.PI;
    Cb.toMercator = function() {
        var a = [6378137 * this.lng * Ei, 6378137 * Math.log(Math.tan(.25 * Math.PI + .5 * this.lat * Ei))];
        20037508.342789244 < a[0] && (a[0] = 20037508.342789244); - 20037508.342789244 > a[0] && (a[0] = -20037508.342789244);
        20037508.342789244 < a[1] && (a[1] = 20037508.342789244); - 20037508.342789244 > a[1] && (a[1] = -20037508.342789244);
        return new F(a[0], a[1])
    };
    p.fromMercator = function(a) { return new p((.5 * Math.PI - 2 * Math.atan(Math.exp(-a.y / 6378137))) * Ng, a.x * Ng / 6378137) };
    var pe = F;
    pd.prototype.fromLatLngToPoint = function(a, b) {
        var c = b || new pe(0, 0),
            e = this.a;
        c.x = e.x + a.getLng() * this.b;
        var d = Wb(Math.sin(ba(a.getLat())), -(1 - 1e-15), 1 - 1e-15);
        c.y = e.y + .5 * Math.log((1 + d) / (1 - d)) * -this.c;
        return c
    };
    pd.prototype.fromPointToLatLng = function(a, b) { var c = this.a; return new p(Yd(2 * Math.atan(Math.exp((a.y - c.y) / -this.c)) - Math.PI / 2), (a.x - c.x) / this.b, b) };
    Le.prototype.fromLatLngToPoint = function(a, b) {
        var c = b || new pe(0, 0);
        c.x = (a.getLng() / 360 + .5) * this.size;
        c.y = (.25 - a.getLat() / 360) * this.size;
        return c
    };
    Le.prototype.fromPointToLatLng = function(a, b) { return new p(360 * (.25 - a.y / this.size), 360 * (a.x / this.size - .5), b) };
    fk.getInstance = function(a) {
        var b = a.scale;
        switch (a.projectionMode) {
            case "latlng":
                return new Le(b);
            default:
                return new pd(b)
        }
    };
    var Xb = navigator.userAgent.toLowerCase(),
        Fi = "opera msie chrome applewebkit firefox mozilla".split(" "),
        Gi = "x11 macintosh windows android iphone ipad".split(" "),
        sa = 0,
        Zd, Pb, Db, mc = 0,
        lb, Og;
    for (Zd = Fi.length; sa < Zd; sa++)
        if (Pb = Fi[sa], -1 != Xb.indexOf(Pb) && (mc = sa + 1, Db = RegExp(Pb + "[ /]?([0-9]+(.[0-9]+)?)").exec(Xb))) { lb = parseFloat(Db[1]); break }
    if (6 == mc) { if (Db = /^mozilla\/.*gecko\/.*(minefield|shiretoko)[ /]?([0-9]+(.[0-9]+)?)/.exec(Xb)) mc = 5, lb = parseFloat(Db[2]); if (Db = /trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(Xb)) mc = 2, lb = parseFloat(Db[1]) }
    1 == mc && (Db = /^opera\/9.[89].*version\/?([0-9]+(.[0-9]+)?)/.exec(Xb)) && (lb = parseFloat(Db[1]));
    sa = 0;
    for (Zd = Gi.length; sa < Zd; sa++)
        if (Pb = Gi[sa], -1 != Xb.indexOf(Pb)) { Og = sa + 1; break }
    var Ye = [mc, lb, Og],
        aa = Ye[2],
        Hi = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i.test(Bb) ? +(RegExp.$6 || RegExp.$2) : 0,
        D = function(a) { return null === a },
        oa = [],
        zb = document;
    oa.isReady = !1;
    oa._used = !1;
    oa.ready = function(a) {
        oa.initReady();
        oa.isReady ? a() : oa.push(a)
    };
    oa.initReady = function() {
        if (!oa._used) {
            oa._used = !0;
            if ("complete" === zb.readyState || "interactive" === zb.readyState) return oa.fireReady();
            if (0 < Na && 9 > Na) {
                zb.attachEvent("onreadystatechange", di);
                var a = function() {
                    if (!oa.isReady) {
                        var b = new Image;
                        try { b.doScroll() } catch (c) { setTimeout(a, 64); return }
                        oa.fireReady()
                    }
                };
                a()
            } else zb.addEventListener("DOMContentLoaded", gg, !1)
        }
    };
    oa.fireReady = function() {
        if (!oa.isReady) {
            if (!zb.body) return setTimeout(oa.fireReady, 16);
            oa.isReady = !0;
            if (oa.length)
                for (var a = 0, b; b = oa[a]; a++) b()
        }
    };
    var Pg = oa.ready,
        Qg = window.qq || (window.qq = {}),
        Jf = Qg.maps || (Qg.maps = {}),
        Ze = function(a, b) {
            if (null === b) null === Jf[a] || delete Jf[a];
            else return Jf[a] = b, ["qq", "maps", a]
        },
        ei = vb,
        Ne = window.document,
        ik = /loaded|complete|undefined/i,
        Me = Ne.dispatchEvent ? "onload" : "onreadystatechange",
        jk = 0 < Hi,
        qe = {},
        hg = Ze("_svcb" + aa, qe).join("."),
        Oe = [],
        em = 0,
        gc = {
            send: function(a, b, c, e, d) {
                a || (a = "cb" + (new Date).getTime().toString(36) + (em++).toString(36));
                Pg(function() {
                    Pd(a);
                    hk(a, b, c, e, null, d)
                });
                return a
            },
            cancel: Pd
        },
        fm = $a[4][1];
    Qd.prototype.addTask = function(a, b, c) {
        var e = this,
            d = "id_" + e.id++;
        this.tasks[d] = {
            id: d,
            func: a,
            args: b,
            callback: function() {
                e.tasks[d].status = !0;
                c.apply(null, arguments);
                e.isAllDone() && e.callback()
            },
            status: !1
        }
    };
    Qd.prototype.doTasks = function() {
        for (var a in this.tasks) {
            var b = this.tasks[a],
                c = b.args.concat([b.callback]);
            b.status = !1;
            b.func.apply(null, c)
        }
    };
    Qd.prototype.isAllDone = function() {
        var a = !0,
            b;
        for (b in this.tasks) a = a && this.tasks[b].status;
        return a
    };
    var xc = ca.prototype;
    xc.getWidth = function() { return this.width };
    xc.getHeight = function() { return this.height };
    xc.toString = function() { return this.width + ", " + this.height };
    xc.equals = function(a) { return !a ? !1 : a.width == this.width && a.height == this.height };
    xc.clone = function() { return new ca(this.width, this.height) };
    xc.scale = function(a) { return new ca(this.width * a, this.height * a) };
    var ue = new fk,
        gm = gc,
        Rg = !1,
        Kf = [],
        Ii = null,
        nc = null,
        Lf = null,
        hm = document.domain;
    vb || (Rg = !0, nc = !1);
    var Ji = function(a) {
            Rg ? a(nc, Lf) : (Kf.push(a), Ii || (Ii = gm.send(null, fm, function(a) {
                a && a.info && 0 === a.info.error ? (nc = !0, Lf = a.detail && a.detail.cfg) : a && a.info && (nc = !1);
                Rg = !0;
                g(Kf, function(a) { a(nc, Lf) });
                Kf.length = 0
            }, null, ["key=" + vb, "output=jsonp", "pf=jsapi", "ref=jsapi", "channel=0", "pid=" + hm, "cb="])))
        },
        Ja = { DEFAULT: "DEFAULT", TILE_BLACK: "TILE_BLACK", DARK: "DARK", TNIT: "TNIT", LIGHT: "LIGHT", RAIN: "RAIN" },
        Kn = function(a, b) {
            /^DEFAULT|TILE_BLACK|DARK|TNIT|LIGHT|RAIN$/.test(a) ? "DARK" === a ? b("TILE_BLACK") : b(a) : /^style\d+$/.test(a) ? Ji(function(c, e) {
                var d = !1,
                    f = null;
                if (c && e && e.custom_map_style && e.custom_map_style.style_list)
                    for (var g = parseInt(a.replace("style", "")), h = e.custom_map_style.style_list, p = 0; p < h.length; p++)
                        if (g === h[p].order) {
                            f = "id_" + h[p].id;
                            d = !0;
                            break
                        }
                d || (alert("\u65e0\u4e2a\u6027\u5316\u6837\u5f0f" + a + "\u6743\u9650\uff0c\u8bf7\u68c0\u67e5\u662f\u5426\u8f93\u5165\u9519\u8bef\uff0c\u6216\u8be5\u6837\u5f0f\u672a\u4e0ekey\u7ed1\u5b9a\uff0c\u6216\u672a\u643a\u5e26key\u503c\u3002\u8bf7\u524d\u5f80\u817e\u8baf\u4f4d\u7f6e\u670d\u52a1\u5b98\u7f51\u8fdb\u884c\u8bbe\u7f6e\u3002"), f = Ja.DEFAULT);
                b(f)
            }) : b(Ja.DEFAULT)
        },
        wk = h,
        $d = function(a, b) { for (var c; c = a.firstChild;) !b && 3 !== c.nodeType && Jg(c), a.removeChild(c) },
        im = gc,
        jm = $a[2][4],
        ve = [$a[2][2], $a[2][3]],
        km = $a[2][0],
        lm = $a[2][1],
        kk = ya,
        Ln = fi,
        oc = function(a) { return "undefined" === typeof a },
        Yb = function(a, b) { throw Error("Invalid value or type for property <" + (a + ("> \uff1a" + b))) },
        Sg = function(a, b) { am.set(a, b) },
        Tg = function(a, b, c) {
            var e = {};
            c && W(c, function(a, b) { e[b] = a });
            b && W(b, function(a, b) { e[b] = a });
            a.setValues(e)
        },
        mk = 0,
        $e = Rd.prototype;
    $e.insert = function(a) {
        var b = this.items,
            c = this.hash(a);
        b[c] || (++this.length, b[c] = a, d.trigger(this, "insert", a))
    };
    $e.remove = function(a) {
        var b = this.items,
            c = this.hash(a);
        b[c] && (--this.length, delete b[c], d.trigger(this, "remove", a))
    };
    $e.contains = function(a) { return !!this.items[this.hash(a)] };
    $e.forEach = function(a) {
        var b = this.items,
            c;
        for (c in b) b.hasOwnProperty(c) && a.call(this, b[c])
    };
    var u = function() {
            var a = arguments,
                b = a.length;
            return function() {
                for (var c = 0; c < b; ++c)
                    if (a[c].apply(this, arguments)) return !0;
                return !1
            }
        },
        G = function(a) { return "[object Number]" == Object.prototype.toString.call(a) && isFinite(a) },
        ja = function(a) { return "boolean" === typeof a },
        V = function(a) { return function(b) { return b instanceof a } },
        ad = function(a, b, c) { b = Ln(b, !c); return Sa(b, a, !0) },
        Eb = function(a) { return function(b) { new b(a) } },
        pk = Yb,
        da = function(a, b) {
            for (var c = 0, e = b && b.length; c < e; c += 2) {
                var d = b[c],
                    f = b[c + 1];
                a["get" + Ff(d)] = nk(d);
                f && (a["set" + Ff(d)] = ok(d, f))
            }
        },
        bd = { TOP_LEFT: 1, TOP_CENTER: 2, TOP: 2, TOP_RIGHT: 3, LEFT_CENTER: 4, LEFT_TOP: 5, LEFT: 5, LEFT_BOTTOM: 6, RIGHT_TOP: 7, RIGHT: 7, RIGHT_CENTER: 8, RIGHT_BOTTOM: 9, BOTTOM_LEFT: 10, BOTTOM_CENTER: 11, BOTTOM: 11, BOTTOM_RIGHT: 12, CENTER: 13 };
    f(qd, h);
    qd.prototype.set = function(a, b) { null != b && (!b || !b.regionStyles || !kb(b.regionStyles) || !b.labelStyles || !kb(b.labelStyles) || !b.lineStyles || !kb(b.lineStyles) || !b.pointStyles || !kb(b.pointStyles) || !b.arrowStyles || !kb(b.arrowStyles)) && console.warn("\u5b9e\u73b0qq.maps.mapStyles\u6240\u9700\u7684\u503c\u4e0d\u7b26\u5408\u8981\u6c42\uff0c\u8bf7\u91cd\u65b0\u4f20\u5165\u53c2\u6570\u5c1d\u8bd5"); return h.prototype.set.apply(this, arguments) };
    f(Mc, h);
    Mc.prototype.set = function(a, b) {
        if (null != b && (!b || !b.tileSize || !G(b.maxZoom) || !b.tileSize.width || !b.tileSize.height)) throw Error("\u5b9e\u73b0 qq.maps.MapType \u6240\u9700\u7684\u503c");
        b._setScale ? b._setScale(this.scale) : b.scale = this.scale;
        return h.prototype.set.apply(this, arguments)
    };
    var af = { DEFAULT: "default", CENTER: "center", OFFSET_CENTER: "offset_center" },
        tb = { ROADMAP: "roadmap", HYBRID: "hybrid", SATELLITE: "satellite", INDOORMAP: "indoormap", HANDDRAW: "handdraw" };
    f(Tb, h);
    var wb = Tb.prototype;
    wb.getAt = function(a) { return this.elems[a] };
    wb.forEach = function(a) { for (var b = 0, c = this.get("length"); b < c && !1 !== a(this.elems[b], b); ++b); };
    wb.setAt = function(a, b) {
        var c = this.elems[a],
            e = this.elems.length;
        if (a < e) this.elems[a] = b, d.trigger(this, "set_at", a, c);
        else {
            for (c = e; c < a; ++c) this.insertAt(c, void 0);
            this.insertAt(a, b)
        }
    };
    wb.insertAt = function(a, b) {
        this.elems.splice(a, 0, b);
        this.set("length", this.elems.length);
        d.trigger(this, "insert_at", b, a)
    };
    wb.removeAt = function(a) {
        var b = this.get("length");
        if (b > a) {
            var c = this.elems[a];
            this.elems.splice(a, 1);
            this.set("length", b - 1);
            d.trigger(this, "remove_at", c, a);
            return c
        }
    };
    wb.push = function(a) { this.insertAt(this.elems.length, a); return this.elems.length };
    wb.pop = function() { return this.removeAt(this.elems.length - 1) };
    wb.exists = function(a) {
        if (a)
            for (var b = 0; b < this.elems.length; b++)
                if (a == this.elems[b]) return !0;
        return !1
    };
    wb.remove = function(a) {
        for (var b = 0; b < this.elems.length; b++)
            if (a == this.elems[b]) return this.removeAt(b)
    };
    wb.clear = function() { for (var a = this.elems.length; a--;) this.removeAt(0) };
    wb.getArray = function() { return this.elems };
    da(wb, ["length", 0]);
    var jg = Hf,
        ig = Wb,
        Pe = ai,
        Nc = fg,
        Fb = Ab.prototype;
    Fb.isEmpty = function() { return this.lat.isEmpty() || this.lng.isEmpty() };
    Fb.getSouthWest = function() { return new p(this.lat.minY, this.lng.minX, !0) };
    Fb.getNorthEast = function() { return new p(this.lat.maxY, this.lng.maxX, !0) };
    Fb.getCenter = function() { return new p(this.lat.center(), this.lng.center()) };
    Fb.intersects = function(a) { return this.lat.intersects(a.lat) && this.lng.intersects(a.lng) };
    Fb.contains = function(a) {
        var b = this.getSouthWest,
            c = this.getNorthEast,
            e;
        return a instanceof Ab ? (e = a.getSouthWest(), a = a.getNorthEast(), e.lat >= b.lat && a.lat <= c.lat && e.lng >= b.lng && a.lng <= c.lng) : this.lat.contains(a.getLat()) && this.lng.contains(a.getLng())
    };
    Fb.extend = function(a) {
        if (this.isEmpty()) {
            var b = a.getLat();
            a = a.getLng();
            this.lat = new Pe(b, b);
            this.lng = new Nc(a, a)
        } else this.lat.extend(a.getLat()), this.lng.extend(a.getLng());
        return this
    };
    Fb.union = function(a) { if (!a.isEmpty()) return this.extend(a.getNorthEast()), this.extend(a.getSouthWest()), this };
    Fb.equals = function(a) { return !a ? !1 : this.lat.equals(a.lat) && this.lng.equals(a.lng) };
    Fb.clone = function() { return new Ab(this.getSouthWest(), this.getNorthEast()) };
    Fb.toString = function() { return this.getSouthWest() + ", " + this.getNorthEast() };
    Fb.toUrlValue = function() { return this.getSouthWest().toUrlValue() + "," + this.getNorthEast().toUrlValue() };
    var gi = Tb,
        Mf = p,
        kg = Ja,
        vk = Rd,
        Dk = function(a) {
            var b = window.setTimeout(a, 1e3);
            im.send(null, cm, function(c) {
                c && c.info && 0 === c.error && (c = c.info, y[0] && c["1d"] && (y[0][6] = c["1d"], y[3][6] = c["1d"]), y[1] && c["2d"] && (y[1][6] = c["2d"]), y[7] && c.vt && (y[7][4] = c.vt), y[2] && c.sat && (y[2][6] = c.sat));
                a();
                clearTimeout(b)
            }, a)
        },
        yk = bd,
        tk = Mc,
        uk = qd,
        xk = W,
        rk = $d,
        qk = oc,
        sf = U,
        Mf = p,
        lg = d,
        sk = Tg,
        Ck = Kn,
        Ak = Sg,
        Ek = function(a) {
            a.setOffsetCenter = function(a) {
                var c = this.getMapCenterOffset() || new ca(0, 0),
                    e = this.getZoom(),
                    d = a;
                if (Number(c.width) || Number(c.height)) a = zd(ue, a, e), c = new F(a.x - c.width, a.y - c.height), d = If(ue, c, e);
                this.setCenter(d)
            };
            a.getOffsetCenter = function() {
                var a = this.getMapCenterOffset() || new ca(0, 0),
                    c = this.getCenter(),
                    e = this.getZoom();
                if (0 == a.width && 0 == a.height) return c;
                c = zd(ue, c, e);
                a = new F(c.x + a.width, c.y + a.height);
                return If(ue, a, e)
            }
        },
        Bk = Qd,
        tf = { mapTypeId: tb.ROADMAP, mapStyleId: kg.DEFAULT, maxZoom: lm, minZoom: km, disableDefaultUI: !1, boundary: null, autoResize: !0, resizeKeepCenter: !0, mapZoomType: af.DEFAULT, mapZoomOffset: new F(0, 0), projectionMode: "mercator", scale: 1 };
    ve[0] && ve[1] && (tf.center = new Mf(ve[0], ve[1]), tf.zoom = jm);
    f(sb, h);
    var Gb = sb.prototype;
    da(sb.prototype, ["projection", null, "bounds", null, "boundary", u(V(Ab), D), "center", V(Mf), "zoom", G, "mapTypeId", sf, "mapStyleId", sf, "mapCenterOffset", V(ca)]);
    Gb._ = function() { return this.V };
    Gb.getContainer = function() { return this.container };
    Gb.panBy = Rc("panby");
    Gb.panTo = Rc("panto");
    Gb.flyTo = Rc("fly_to");
    Gb.zoomBy = function(a) {
        var b = this.getZoom();
        G(b) && this.setZoom(b + a)
    };
    Gb.zoomTo = function(a) { this.setZoom(a) };
    Gb.fitBounds = Rc("fitbounds");
    Gb.panToBounds = Rc("pantolatlngbounds");
    f(Sc, h);
    Sc.prototype.map_changed = function() {
        var a = this;
        T.$require("oy", function(b) { b(a) })
    };
    da(Sc.prototype, ["map", u(V(sb), D), "panes", null, "projection", null]);
    Nb.fromHex = function(a, b) {
        "#" === a.substring(0, 1) && (a = a.substr(1));
        var c = 3 === a.length ? 1 : 2,
            e = a.substr(0, c),
            d = a.substr(c, c),
            f = a.substr(2 * c, c);
        1 === c && (e += e, d += d, f += f);
        e = parseInt(e, 16);
        d = parseInt(d, 16);
        f = parseInt(f, 16);
        return new Nb(e, d, f, b || 1)
    };
    var yc = Nb.prototype;
    yc.toRGB = function() { return "rgb(" + [this.red, this.green, this.blue].join() + ")" };
    yc.toRGBA = function() { return "rgba(" + [this.red, this.green, this.blue, this.alpha].join() + ")" };
    yc.toHex = function() { return "#" + (16777216 + (this.red << 16) + (this.green << 8) + this.blue).toString(16).slice(1).toUpperCase() };
    yc.toInt = function() { return this.red << 16 | this.green << 8 | this.blue };
    yc.toString = function() { return this.toRGBA() };
    yc.clone = function() { return new Nb(this.red, this.green, this.blue, this.alpha) };
    var Hk = Eb,
        ec = Tb,
        Gk = ad,
        Fk = g,
        ng = ya,
        mg = V(ec),
        Va = Nb;
    f(Tc, Sc);
    Tc.prototype.getPath = function() { return this.get("path") };
    Tc.prototype.setPath = function(a) {
        a = uf(a) || new ec;
        this.is2Dim = mg(a.getAt(0));
        this.set("path", a)
    };
    Tc.prototype.getBounds = function() {
        var a = this.getPath(),
            b = this.is2Dim,
            c = null;
        if (a && a.getLength()) {
            var e = [],
                d = [];
            a.forEach(function(a) {
                b ? a.forEach(function(a) {
                    e.push(a.getLng());
                    d.push(a.getLat())
                }) : (e.push(a.getLng()), d.push(a.getLat()))
            });
            var f = Math.min.apply(Math, e),
                g = Math.min.apply(Math, d),
                a = Math.max.apply(Math, e),
                c = Math.max.apply(Math, d),
                f = new p(g, f),
                a = new p(c, a),
                c = new Ab(f, a)
        }
        return c
    };
    da(Tc.prototype, ["map", u(V(sb), D), "visible", ja, "simplify", ja, "clickable", ja, "editable", ja, "cursor", U, "zIndex", G, "geodesic", ja, "strokeDashStyle", u(U, D), "strokeColor", u(V(Va), U, D), "strokeWeight", u(G), "fillColor", u(V(Va), U, D), "strokeLinecap", U]);
    var hi = Tc;
    f(og, hi);
    var ii = Tc;
    f(pg, ii);
    var Ik = ad,
        vc = Nb,
        Jk = Eb;
    f(Qe, Sc);
    da(Qe.prototype, ["map", u(V(sb), D), "visible", ja, "editable", ja, "center", u(V(p), D), "radius", u(G, D), "cursor", u(U, D), "zIndex", u(G, D), "fillColor", u(V(vc), U, D), "strokeColor", u(V(vc), U, D), "strokeWeight", G, "strokeDashStyle", u(U, D)]);
    var mm = /-./g,
        nm = function(a) { return a.charAt(1).toUpperCase() },
        Ki = {};
    Ki["float"] = Na ? "styleFloat" : "cssFloat";
    var om = function(a, b) { b = b || {}; return function(c) { return Fg(b, c) ? b[c] : b[c] = a(c) } }(function(a) { return a.replace(mm, nm) }, Ki),
        P = function(a, b, c) { a.style[om(b)] = c },
        bf = 5 == aa || 6 == aa,
        Ad = Ye[1],
        ta = Ye[0],
        Hb = function() {
            var a = Wd,
                b = ta,
                c = Ad,
                e = bf,
                e = 4 == b && e,
                c = 4 == b && 4 == aa && 534 <= c,
                d = 3 == b && 4 == aa,
                f = 2 == b && 0 < navigator.msMaxTouchPoints,
                b = 2 == b && 0 < navigator.maxTouchPoints,
                a = 1 == aa || 2 == aa ? !1 : a("touchstart") && a("touchmove") && a("touchend");
            return e || c || d || f || b || a ? !0 : !1
        }(),
        Ug = 1 == aa || 2 == aa || 3 == aa || !!window.navigator.msPointerEnabled || !Hb,
        pm = /android\s(\d+\.\d)/i.test(Bb) ? +RegExp.$1 : 0,
        Mn = /iPhone\sOS\s(\d[_\d]*)/i.test(Bb) ? +parseFloat(RegExp.$1.replace(/_/g, ".")) : 0,
        Nn = /iPad.*OS\s(\d[_\d]*)/i.test(Bb) ? +parseFloat(RegExp.$1.replace(/_/g, ".")) : 0,
        qm = "ontouchstart" in window || Nn || Mn || pm,
        rm = /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(Bb) && !/chrome/i.test(Bb) ? +(RegExp.$1 || RegExp.$2) : 0,
        cf = function(a, b, c) {
            var e = a.length;
            c = c || 0;
            for (0 > c && (c += e); c < e; c++)
                if (a[c] === b) return c;
            return -1
        },
        Vg = {
            anims: [],
            timer: null,
            add: function(a) {
                a._startTime = +Qa(); - 1 === cf(this.anims, a) && this.anims.push(a);
                null === this.timer && (this.timer = setInterval(this.nextFrame, 16))
            },
            remove: function(a) {
                var b = this.anims;
                g(this.anims, function(c, e) { if (a === c) return delete a._startTime, b.splice(e, 1), !1 });
                0 === b.length && (clearInterval(this.timer), this.timer = null)
            },
            nextFrame: function() {
                var a = +Qa(),
                    b = [],
                    c = null;
                g(Vg.anims.concat(), function(e) {
                    if (e._startTime) {
                        b.push(e);
                        c = +Qa();
                        var d = a - e._startTime,
                            f = !1;
                        d >= e.duration && (d = e.duration, f = !0);
                        e.set("current", d);
                        e.onEnterFrame(d);
                        f ? e.stop() : e.status || (e.status = 1);
                        e._frameDuration = +Qa() - c
                    }
                });
                var e = +Qa() - a;
                g(b, function(a) { a._startTime && (a.onExitFrame(a._frameDuration, e), delete a._frameDuration) })
            }
        };
    f(qg, h);
    var Bd = qg.prototype;
    Bd.start = function() {
        function a() {
            b.onStart();
            b.status = 0;
            Vg.add(b);
            delete b._delayTimer
        }
        this.stop(!0);
        var b = this;
        this.delay ? b._delayTimer = window.setTimeout(a, b.delay) : a()
    };
    Bd.stop = function(a) {
        this._delayTimer && (window.clearTimeout(this._delayTimer), delete this._delayTimer);
        Vg.remove(this);
        this.status = -1;
        if (!a) this.onEnd()
    };
    Bd.getStatus = function() { return this.status };
    Bd.onStart = function() {};
    Bd.onEnterFrame = function() {};
    Bd.onExitFrame = function() {};
    Bd.onEnd = function() {};
    var Wg = function(a) {
            a = a || window.event;
            if (Na) a = [a.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft), a.clientY + (document.documentElement.scrollTop || document.body.scrollTop)];
            else if (a.touches) {
                var b = null;
                0 < a.targetTouches.length ? b = a.targetTouches[0] : 0 < a.changedTouches.length && (b = a.changedTouches[0]);
                a = [b.pageX, b.pageY]
            } else a = [a.pageX, a.pageY];
            return a
        },
        we = function(a) {
            if (null === a.parentNode || "none" == a.style.display) return [0, 0, 0, 0];
            var b = null,
                c = 0,
                e = 0,
                d = a.offsetWidth,
                f = a.offsetHeight;
            if (a.getBoundingClientRect && !qm) b = a.getBoundingClientRect(), a = Math.max(document.documentElement.scrollTop, document.body.scrollTop), c = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft), c = b.left + c, e = b.top + a;
            else {
                if (document.getBoxObjectFor) b = document.getBoxObjectFor(a), c = a.style.borderLeftWidth ? parseInt(a.style.borderLeftWidth) : 0, e = a.style.borderTopWidth ? parseInt(a.style.borderTopWidth) : 0, c = b.x - c, e = b.y - e;
                else {
                    c = a.offsetLeft;
                    e = a.offsetTop;
                    b = a.offsetParent;
                    if (b != a)
                        for (; b;) c += b.offsetLeft, e += b.offsetTop, b = b.offsetParent;
                    if (Hi || rm && "absolute" == a.style.position) c -= document.body.offsetLeft, e -= document.body.offsetTop
                }
                for (b = a.parentNode ? a.parentNode : null; b && "BODY" != b.tagName && "HTML" != b.tagName;) c -= b.scrollLeft, e -= b.scrollTop, b = b.parentNode ? b.parentNode : null
            }
            return [c, e, d, f]
        },
        Lk = Ug,
        Kk = Hb;
    f(Re, h);
    var cd = Re.prototype;
    cd.start = function() { this.set("tracking", !0) };
    cd.stop = function() { this.set("tracking", !1) };
    cd.addListener = function(a, b) { return d.addListener(this, a, b) };
    cd.removeListener = function(a) { return d.removeListener(a) };
    cd.clearAllListener = function() { d.clearInstanceListeners(this) };
    var v = function(a, b, c, e, d) {
            a = document.createElement(a || "div");
            e && (a.style.cssText = e);
            void 0 != c && P(a, "z-index", c);
            b && !d && b.appendChild(a);
            return a
        },
        xb = { Copyright: { prefix: "\u00a9" + (new Date($a[3][0])).getFullYear() + " Tencent", sno: "GS(2018)2236\u53f7", dataPrefix: "Data\u00a9", imagePrefix: "Imagery\u00a9", home: "\u5230\u817e\u8baf\u5730\u56fe\u67e5\u770b\u6b64\u533a\u57df" }, Key: { invalid: "\u5f00\u53d1\u8005\u5bc6\u94a5\u9a8c\u8bc1\u5931\u8d25" }, PhoneTime: "\u62cd\u6444\u65e5\u671f", MapType: { ROADMAP: { name: "\u5730\u56fe", alt: "\u663e\u793a\u8857\u9053\u5730\u56fe" }, SATELLITE: { name: "\u536b\u661f", alt: "\u663e\u793a\u536b\u661f\u5730\u56fe" }, HYBRID: { name: "\u6df7\u5408", alt: "\u663e\u793a\u5e26\u6709\u8857\u9053\u540d\u79f0\u7684\u536b\u661f\u5730\u56fe" }, TRAFFIC: { name: "\u8def\u51b5", alt: "\u663e\u793a\u5b9e\u65f6\u8def\u51b5" }, HANDDRAW: { name: "\u624b\u7ed8", alt: "\u663e\u793a\u624b\u7ed8\u5730\u56fe" } }, Navigation: { zoomIn: "\u653e\u5927", zoomOut: "\u7f29\u5c0f", left: "\u5411\u5de6\u5e73\u79fb", right: "\u5411\u53f3\u5e73\u79fb", up: "\u5411\u4e0a\u5e73\u79fb", down: "\u5411\u4e0b\u5e73\u79fb", ruler: "\u5355\u51fb\u7f29\u653e", slide: "\u62d6\u52a8\u7f29\u653e", zoomTips: { 17: "\u8857", 11: "\u5e02", 8: "\u7701", 4: "\u56fd" } }, Scale: { m: "\u7c73", km: "\u516c\u91cc", mile: "\u82f1\u91cc", feet: "\u82f1\u5c3a" }, Time: { msec: "\u6beb\u79d2", sec: "\u79d2", min: "\u5206\u949f", hour: "\u5c0f\u65f6" }, Transfer: ["\u4e58\u5750", "\u7ecf\u8fc7", "\u7ad9", "\u5230\u8fbe", "\u7ec8\u70b9"], Direction: "\u4e1c \u4e1c\u5317 \u5317 \u897f\u5317 \u897f \u897f\u5357 \u5357 \u4e1c\u5357".split(" ") },
        dd = function() {
            var a = navigator.systemLanguage || navigator.language,
                a = a.toLowerCase().split("-")[0];
            switch (a) {
                case "zh":
                    return xb;
                default:
                    return xb
            }
        }(),
        hc = { POI: "poi", SYN: "syn", POI_SYN: "poi_syn", RN: "rn", BUSLS: "busls", BUS: "bus", DT: "dt", DTS: "dts", GEOC: "geoc", RGEOC: "rgeoc", GC: "gc", CC: "cc", NAV: "snsnav", WALK: "walk", POS: "pos", SG: "sg", TAXFEE: "taxfee" },
        $ = { ERROR: "ERROR", NO_RESULTS: "NO_RESULTS", INVALID_REQUEST: "INVALID_REQUEST", UNKNOWN_ERROR: "UNKNOWN_ERROR", INVALID_KEY: "INVALID_KEY" },
        Mk = Sa;
    f(Uc, h);
    var Xg = Uc.prototype;
    Xg.send = function() {
        var a = this;
        Ji(function(b) { b ? a.set("doSend", !0) : (console.warn("\u9274\u6743\u5931\u8d25\uff0c\u8bf7\u4f20\u5165\u6b63\u786e\u7684key"), b = a.get("error"), R(b) && b($.INVALID_KEY)) })
    };
    Xg.cancel = function() { this.set("doSend", !1) };
    Xg.clear = function() { this.set("doClear", !0) };
    da(Uc.prototype, ["complete", u(R, D), "error", u(R, D), "map", u(V(sb), D), "panel", u(Hg, U, D)]);
    var Cd = function(a) {
            var b = [];
            W(a, function(a, e) { b.push(e + "=" + encodeURIComponent(a)) });
            return b.join("&")
        },
        Yg = function(a, b, c, e, d, f) { return { id: a, latlng: b || null, heading: c || 0, pitch: e || 0, zoom: d || 1, description: f || "" } },
        sm = function(a) { return a / 111319.49077777778 },
        Zg = function(a) { return 114.59155902616465 * Math.atan(Math.exp(.017453292519943295 * (a / 111319.49077777778))) - 90 },
        tm = $a[4][3],
        jp = $a[4][2],
        Zk = h,
        ae = $a[4][0],
        ea = { CIRCLE: "circle", MARKER: "marker", POLYGON: "polygon", POLYLINE: "polyline", RECTANGLE: "rectangle", SLICE: "slice", JOIN: "join" },
        Pk = Eb,
        Nk = ad,
        Ok = Tb;
    f(vf, h);
    da(vf.prototype, ["gridSize", G, "minimumClusterSize", G, "maxZoom", G, "zoomOnClick", ja, "averageCenter", ja, "styles", ya, "map", u(V(sb), D)]);
    var um = function(a, b) {
            this.coords = a;
            this.type = b
        },
        df = function(a, b) {
            this.content = a;
            this.offset = b || new F(0, 0)
        },
        xe = function(a, b, c, e, d, f) {
            this.url = a;
            this.size = b || d;
            this.origin = c || new F(0, 0);
            this.anchor = e;
            this.scaledSize = d;
            this.shadowAngle = f || 0
        },
        Sk = Eb,
        Rk = ad,
        rg = d;
    f(fc, Sc);
    fc.prototype.changed = function(a) { this.viewModel && "constructed" !== a && ("icon" == a || "shadow" == a || "shape" == a || "cross" == a || "useDefaults" == a ? this.viewModel.styleChange(a) : "animation" == a ? this.viewModel.animationChange(a) : "height" == a ? (this.viewModel.set(a, this.get(a)), this.viewModel.animationChange(a)) : this.viewModel.set(a, this.get(a))) };
    fc.prototype.moveTo = wc("moveTo");
    fc.prototype.moveAlong = wc("moveAlong");
    fc.prototype.stopMove = wc("stopMove");
    fc.prototype.pauseMove = wc("pauseMove");
    fc.prototype.resumeMove = wc("resumeMove");
    da(fc.prototype, ["position", u(V(p), D), "title", u(G, U, D), "icon", u(V(xe), U, D), "shadow", u(V(xe), D), "shape", u(V(um), D), "decoration", u(V(df), D), "cursor", u(U, D), "clickable", ja, "animation", u(G, U, D), "draggable", ja, "visible", ja, "flat", ja, "zIndex", G, "height", G, "map", u(V(sb), D), "rotation", G, "autoRotation", ja]);
    var Vk = Tb,
        Yk = Rd,
        Uk = bd,
        sg = d,
        Wk = Tg,
        ji = U,
        Tk = W,
        $k = Sg,
        Xk = { pano: null, position: null, zoom: 1, scrollwheel: !0, visible: !0, disableDefaultUI: !1, autoResize: !0 };
    f(Ob, h);
    var Nf = Ob.prototype;
    Nf._ = function() { return this.V };
    da(Ob.prototype, ["position", null, "planeInfo", null, "pano", u(ji, D), "pov", kb, "zoom", function(a) { return !G(a) || 1 > a || 4 < a ? !1 : !0 }, "visible", ja]);
    Nf.startAutoPlay = ki("startAutoPlay");
    Nf.stopAutoPlay = ki("stopAutoPlay");
    f(rd, h);
    rd.prototype.panorama_changed = function() {
        var a = this;
        T.$require("pano", function(b) { b(a) }, 1)
    };
    da(rd.prototype, ["position", u(V(p), D), "panorama", u(V(Ob), D), "content", U, "altitude", G, "visible", ja]);
    var al = yd;
    f(sd, h);
    sd.prototype.map_changed = function() {
        var a = this;
        T.$require("layers", function(b) { b(a) }, 1)
    };
    da(sd.prototype, ["map", u(V(sb), D)]);
    Se.prototype.checkBounds = function(a, b) {
        var c = { has_sv: 1, bound: a.toUrlValue() },
            c = tm + "?" + Cd(c);
        tg(null, c, function(a) { b(a.detail.has_sv || 0) })
    };
    Se.prototype.getPano = function(a, b, c) {
        tg("", jp + "?lat=" + a.lat + "&lng=" + a.lng + "&r=" + (b || 500), function(a) {
            if (a.detail.svid) {
                var b = a.detail.road_name || "";
                "NA" === b && (b = "");
                a = new Yg(a.detail.svid, new p(Zg(a.detail.y), a.detail.x / 111319.49077777778), null, null, null, b);
                a.svid = a.id;
                c(a)
            } else c(null)
        })
    };
    var vm = { NORMAL: 0, BUS_STATION: 1, SUBWAY_STATION: 2, BUS_LINE: 3, DISTRICT: 4 },
        Li = { BUS: "BUS", SUBWAY: "SUBWAY", WALK: "WALK" },
        wm = { LEAST_TIME: 0, LEAST_TRANSFER: 1, LEAST_WALKING: 2, MOST_ONE: 3, NO_SUBWAY: 4 },
        xm = { LEAST_TIME: 0, AVOID_HIGHWAYS: 1, LEAST_DISTANCE: 2, REAL_TRAFFIC: 3, PREDICT_TRAFFIC: 4 },
        bl = Sa,
        dl = Eb,
        cl = xm;
    f(Sd, Uc);
    var $g = Sd.prototype;
    $g.search = function(a, b) {
        var c = u(U, V(p), kb);
        c(a) && c(b) ? (this.set("start", a), this.set("end", b), this.send()) : c(a) ? Yb("end", b) : Yb("start", a)
    };
    da(Sd.prototype, ["complete", u(R, D), "error", u(R, D), "location", U, "policy", G]);
    $g.setPolicy = function(a, b) {
        this.set("policy", a);
        this.set("time", b)
    };
    var el = Sa,
        gl = Eb,
        fl = wm;
    f(Bc, Uc);
    Bc.prototype.search = function(a, b) {
        var c = u(U, V(p), kb);
        c(a) && c(b) ? (this.set("start", a), this.set("end", b), this.send()) : c(a) ? Yb("end", b) : Yb("start", a)
    };
    da(Bc.prototype, ["complete", u(R, D), "error", u(R, D), "location", U, "policy", G]);
    var hl = Sa,
        il = Eb;
    f(td, Uc);
    td.prototype.searchById = function(a) {
        this.set("info", a);
        this.send()
    };
    da(td.prototype, ["complete", u(R, D), "error", u(R, D)]);
    var jl = Sa,
        kl = Eb;
    f(ud, Uc);
    ud.prototype.searchById = function(a) {
        this.set("info", a);
        this.send()
    };
    da(ud.prototype, ["complete", u(R, D), "error", u(R, D)]);
    var ml = Eb,
        ug = Uc,
        ll = d;
    f(Te, ug);
    var db = Te.prototype;
    db.searchLocalCity = function() {
        this.set("mode", 0);
        this.set("info", null);
        this.send()
    };
    db.searchCityByName = function(a) {
        this.set("mode", 1);
        this.set("info", a);
        this.send()
    };
    db.searchCityByLatLng = function(a) {
        this.set("mode", 2);
        this.set("info", a);
        this.send()
    };
    db.searchCityByIP = function(a) {
        this.set("mode", 3);
        this.set("info", a);
        this.send()
    };
    db.searchCityByAreaCode = function(a) {
        this.set("mode", 4);
        this.set("info", a);
        this.send()
    };
    var ol = Eb,
        li = Uc,
        nl = d;
    f(Ue, li);
    var Mi = Ue.prototype;
    Mi.getAddress = function(a) {
        this.set("qt", hc.RGEOC);
        this.set("info", a);
        this.send()
    };
    Mi.getLocation = function(a) {
        this.set("qt", hc.GEOC);
        this.set("info", a);
        this.send()
    };
    var vg = Uc,
        ql = d,
        rl = Eb,
        pl = Sa;
    f(vd, vg);
    var ah = vd.prototype;
    ah.search = function(a) {
        this.set("keyword", a);
        a = hc.POI;
        2 === this.get("mode") && (a = hc.BUSLS);
        this.set("qt", a);
        this.send()
    };
    ah.searchInBounds = function(a, b) {
        this.set("qt", hc.POI_SYN);
        this.set("keyword", a);
        this.set("region", b);
        this.send()
    };
    ah.searchNearBy = function(a, b, c, e) {
        this.set("qt", hc.RN);
        this.set("keyword", a);
        this.set("region", [b, c]);
        this.set("sortType", e || 0);
        this.send()
    };
    da(vd.prototype, ["complete", u(R, D), "error", u(R, D), "pageIndex", G, "pageCapacity", G, "location", u(U, D)]);
    var ic = { POI_LIST: "POI_LIST", CITY_LIST: "CITY_LIST", AREA_INFO: "AREA_INFO", GEO_INFO: "GEO_INFO", STATION_INFO: "STATION_INFO", LINE_INFO: "LINE_INFO", TRANSFER_INFO: "TRANSFER_INFO", DRIVING_INFO: "DRIVING_INFO", MULTI_DESTINATION: "MULTI_DESTINATION", AUTOCOMPLETE_PREDICTION: "AUTOCOMPLETE_PREDICTION" },
        sl = yd;
    f(Td, h);
    Td.prototype.map_changed = function() {
        var a = this;
        T.$require("layers", function(b) { b(a) }, 0)
    };
    da(Td.prototype, ["map", u(V(sb), D)]);
    var ym = { DEFAULT: 0 },
        tl = ad,
        ul = ym,
        Ni = wg.prototype;
    Ni.setMap = function(a) {
        this.map && (this.map.setOptions({ scaleControl: !1 }), this.map = void 0);
        a && (this.map = a, this.setOptions(a.get("scaleControlOptions")))
    };
    Ni.setOptions = function(a) {
        a = a || {};
        this.map.setOptions({ scaleControl: !0, scaleControlOptions: { position: a.align || a.position } })
    };
    var ye = { DEFAULT: 0, LARGE: 1, SMALL: 2 },
        Oi = { DEFAULT: 0, SMALL: 1, ZOOM_PAN: 2 },
        wl = ca,
        vl = ad,
        wf = Oi,
        Pi = mi.prototype;
    Pi.setMap = function(a) {
        this.map && (this.map.setOptions({ zoomControl: !1, panControl: !1 }), this.map = void 0);
        a && (this.map = a, this.setOptions(this.opts))
    };
    Pi.setOptions = function(a) {
        a = a || {};
        switch (a.style) {
            case wf.SMALL:
                this.map.setOptions({ zoomControl: !0, zoomControlOptions: { position: a.position || a.align, style: ye.SMALL, zoomTips: a.zoomTips }, panControl: !1 });
                break;
            case wf.ZOOM_PAN:
                this.map.setOptions({ zoomControl: !0, zoomControlOptions: { style: ye.SMALL, position: a.position || a.align, zoomTips: a.zoomTips }, panControl: !0, panControlOptions: { position: a.position || a.align } });
                break;
            default:
                this.map.setOptions({ zoomControl: !0, zoomControlOptions: { style: ye.DEFAULT, position: a.position || a.align, zoomTips: a.zoomTips }, panControl: !0, panControlOptions: { position: a.position || a.align } })
        }
    };
    var xl = g,
        yl = ["position", "style", "mapTypeIds", "align"];
    f(ni, h);
    var xg = h,
        Wc = d,
        Ub = g,
        zl = qg;
    Vc.prototype.add = function(a) { a.mvcRN || (a.mvcRN = ++this.count, this.views.push(a), !this.isRun && 0 < this.count && this.start()) };
    Vc.prototype.renderOne = function(a) {
        delete a.mvcRN;
        a.draw()
    };
    Vc.prototype.renderViews = function() {
        for (var a = null, b = this.views; a = b.shift();) a.mvcRN && this.renderOne(a);
        this.count = 0
    };
    Vc.prototype.start = function() {
        this.isRun = !0;
        var a = this,
            b = this.anim,
            c = this.views;
        b.onEnterFrame = function() { c[0] ? a.renderViews() : a.stop() };
        b.onEnd = function() { a.isRun && b.start() };
        b.delay = 10;
        b.start()
    };
    Vc.prototype.stop = function() {
        this.isRun = !1;
        var a = this.anim;
        delete a.onEnd;
        a.stop()
    };
    var bh = new Vc;
    f(hb, xg);
    var za = hb.prototype;
    za.redraw = function(a) { a ? this.forcedraw() : bh.add(this) };
    za.forcedraw = function() { bh.renderOne(this) };
    za.draw = function() {};
    za.dispose = function() { Wc.removeListener(this._fdrawListener) };
    za.triggerEvents = function(a, b, c) {
        var e = this._model;
        if (e) {
            if (Ig(b))
                for (var d = new Re(b), f = this, g = 0, h = a.length; g < h; g++) d.addListener(a[g], function(a, b) {
                    return function(c) {
                        var e = f.getMouseContainerPixel(c),
                            d = f.getMouseEventLatLng(c, e);
                        c = new lc(d, e, b, a, c);
                        Wc.trigger(a, b, c)
                    }
                }(e, a[g]));
            if (null == b || b == e) {
                b = new lc;
                d = 0;
                for (g = c.length; d < g; d += 2) b[c[d]] = c[d + 1];
                b.target = e;
                b.type = a;
                Wc.trigger(e, a, b)
            }
        }
    };
    za.triggerMapsEvent = function(a, b) {
        var c = null,
            e = null,
            d = this._model;
        d && (b && (c = this.getMouseContainerPixel(b), e = this.getMouseEventLatLng(b, c)), c = new lc(e, c, a, d, b), Wc.trigger(d, a, c))
    };
    za.triggerCustomEvent = function(a, b, c) {
        c = c || {};
        var e = null,
            d = this._model;
        if (d) {
            if (b) {
                var f = d.get("map") || d;
                f && (f = f.get("mapCanvasProjection")) && (e = f.fromLatLngToContainerPixel(b))
            }
            var g = new lc(b, e, a, d, null, c.cursorPixel);
            c && W(c, function(a, b) { g[b] = a });
            Wc.trigger(d, a, g)
        }
    };
    za.forwardEvents = function(a) { var b = this._model; if (b) { b._eventTaget || (b._eventTaget = {}); for (var c = 0, d = a.length; c < d; c++) Wc.forward(b._eventTaget, a[c], this) } };
    za.getMouseEventLatLng = function(a, b) { var c = this._model; if (c && (c = c.get("map") || c)) return b = b || this.getMouseContainerPixel(a), (c = c.get("mapCanvasProjection")) && c.fromContainerPixelToLatLng(b, !0) };
    za.getMouseEventPoint = function(a) { var b = this._model; if (b && (b = b.get("map") || b)) return a = this.getMouseContainerPixel(a), b.get("mapCanvasProjection").fromContainerPixelToPoint(a) };
    za.getMouseContainerPixel = function(a) { var b = this._model; if (b) return b = b.get("map") || b, b = b.get("mapContainer") || b.getContainer(), b = we(b), a = Wg(a), new F(a[0] - b[0], a[1] - b[1]) };
    za.getModel = function() { return this._model };
    za.keysReady = function(a, b, c) {
        oi(this, a, b, function(a, b) {
            var d = !0;
            Ub(a, function(a, e) { if (!(c && ja(c(a, b[e])) ? 0 : null !== a && !oc(a))) return d = !1 });
            return d
        })
    };
    za.keysUnReady = function(a, b, c) {
        oi(this, a, b, function(a, b) {
            var d = !1;
            Ub(a, function(a, e) { var f; if (c && ja(f = c(a, b[e])) ? f : null === a || oc(a)) return d = !0, !1 });
            return d
        })
    };
    f(re, hb);
    var Qi = re.prototype;
    Qi.changed = function(a) {
        this.a[a] = !0;
        this.redraw()
    };
    Qi.draw = function() {
        var a = this.get("map"),
            b = this.get("content"),
            c = this.get("visible"),
            e = this.a,
            f = this.l;
        this.a = {};
        if (!a || !b || !1 === c) a = this.e, f && a && f.remove(a), pi(this.e);
        else {
            var g = this.get("align") || bd.TOP_CENTER;
            (c = this.e) || (c = this.e = v("div"));
            if (e.map || e.align) {
                var h = this.e;
                f && h && f.remove(h);
                f = this.l = a.controls[g];
                f.push(c)
            }
            e.content && (pi(c), U(b) ? c.innerHTML = b : c.appendChild(b));
            e.margin && (a = this.get("margin") || new ca(0, 0), c.style.margin = [a.getWidth() + "px", a.getHeight() + "px", a.getWidth() + "px", a.getHeight() + "px"].join(" "));
            c && d.trigger(c, "resize")
        }
    };
    da(re.prototype, ["map", u(V(sb), D), "content", u(U, Hg), "align", G, "margin", V(ca), "zIndex", G, "visible", ja]);
    var Al = ad,
        Bl = Eb;
    f(xf, Sc);
    da(xf.prototype, ["map", u(V(sb), D), "imageUrl", u(U, D), "bounds", u(V(Ab), D), "visible", ja, "clickable", ja, "cursor", U, "zIndex", u(G, D), "opacity", u(G, D)]);
    var Cl = ad,
        Dl = Eb;
    f(yf, Sc);
    da(yf.prototype, ["map", u(V(sb), D), "position", u(V(p), D), "content", u(U, D), "title", u(U, D), "visible", ja, "zIndex", u(G, D), "offset", u(V(ca), D), "style", u(kb, U, D), "clickable", ja]);
    var El = ad,
        Fl = Eb,
        yg = Sc;
    f(Ve, yg);
    da(Ve.prototype, ["map", u(D, V(sb)), "position", u(D, V(p), V(h)), "content", u(U, Hg, D), "zIndex", G]);
    Ve.prototype.open = function() {
        this.set("visible", !0);
        this.get("disableAutoPan") || this.notify("autoPan")
    };
    Ve.prototype.close = function() { this.set("visible", !1) };
    Ve.prototype.notifyResize = function() { this.notify("resize") };
    var zg = Qe;
    f(qi, zg);
    qi.prototype.getBounds = function() {
        var a = this.get("center"),
            b = this.get("radius"),
            c = null;
        if (a)
            if (0 >= b) c = new Ab(a.clone(), a.clone());
            else var d = a.getLat(),
                f = b / 6378137,
                g = 180 * f / Math.PI,
                b = d + g,
                c = d - g,
                d = Math.cos(d * Math.PI / 180),
                g = 360 * Math.asin(f / 2 / d) / Math.PI,
                d = a.getLng() + g,
                a = a.getLng() - g,
                c = new Ab(new p(c, a), new p(b, d));
        return c
    };
    var ri = pg;
    f(zf, ri);
    var si = og;
    f(Xc, si);
    var Ag = vf;
    f(Af, Ag);
    var Zb = Af.prototype;
    Zb.addMarker = function(a) { this.clusterView.addMarker(a) };
    Zb.removeMarker = function(a) {
        var b = this.get("markers");
        b && (b.remove(a), this.clusterView.removeMarker(a))
    };
    Zb.addMarkers = function(a) {
        var b = this.get("markers");
        g(a, function(a) { b.push(a) });
        this.clusterView.redraw()
    };
    Zb.removeMarkers = function(a) {
        var b = this.get("markers");
        g(a, function(a) { b.remove(a) });
        this.clusterView.removeMarkers(a)
    };
    Zb.clearMarkers = function() {
        var a = this.get("markers");
        this.clusterView.removeMarkers(a.elems.slice());
        a.clear()
    };
    Zb.getMarkers = function() { return this.get("markers") };
    Zb.getClustersCount = function() { return this.clusterView.getClusterCount() };
    Zb.updateView = function() { return this.clusterView.reloadView() };
    var zm = { BOUNCE: 1, DROP: 2, UP: 3, DOWN: 4 },
        ti = fc;
    f(Ud, ti);
    Ud.prototype.CLASS_NAME = "Marker";
    var Hl = Rd,
        Il = dg,
        Gl = Sa,
        Yc = Z;
    f(se, h);
    da(se.prototype, ["opacity", u(G, D)]);
    se.prototype._setScale = function(a) { this.set("scale", a) };
    var Am = function(a) { var b; return function() { a && (b = a(), a = null); return b } },
        On = $a[3][1],
        ze = function() { return window.devicePixelRatio || screen.deviceXDPI && screen.deviceXDPI / 96 || 1 },
        Ri = Am(function() {
            var a = document.createElement("canvas");
            a.width = 16;
            a.height = 16;
            return !(!a || !a.getContext)
        }),
        ch = On,
        ch = ch + "?appid=jsapi&logid=0&v=",
        dh = Bi[1],
        Si = $a[6][2],
        Jl = Ud,
        ui = d;
    f(Vd, h);
    var Ib = Vd.prototype;
    Ib.remove = function() {
        this.icon.set("map", null);
        this.markers.length = 0;
        ui.removeListener(this.clickListener);
        delete this.markers;
        delete this.icon;
        delete this.markerCluster;
        delete this.clickListener
    };
    Ib.addMarker = function(a) { this.isMarkerAlreadyAdded(a) || (this.markers.push(a), this.updateCenter(a.get("position"))) };
    Ib.redraw = function() {
        var a = this,
            b = this.markerCluster.get("minimumClusterSize") || 1,
            c = this.markers,
            d = c.length >= b;
        g(c, function(b) {
            b.isClustered = d;
            a.markerCluster.setMarkerDisplay(b, !d)
        });
        this.isCluster = d;
        this.updateIcon()
    };
    Ib.updateCenter = function(a) {
        var b = this.get("center");
        if (b) {
            if (this.markerCluster.get("averageCenter")) {
                var c = this.markers.length;
                this.set("center", new p((b.lat * (c - 1) + a.lat) / c, (b.lng * (c - 1) + a.lng) / c))
            }
        } else this.set("center", a)
    };
    Ib.updateIcon = function() {
        var a = this.markerCluster.getStyles(),
            b = a.length,
            c = this.markerCluster.getCalculator(this.markers, b),
            d = Math.max(0, c.index - 1),
            d = Math.min(b - 1, d),
            b = a[d],
            a = b.icon,
            b = b.text,
            c = b.content.replace(/\{(\w+)\}/g, c.text),
            c = new df(c, b.offset);
        this.icon.set("decoration", c);
        this.icon.set("icon", a);
        this.icon.set("map", this.isCluster ? this.map : null);
        this.icon.set("position", this.isCluster ? this.center : null)
    };
    Ib.isMarkerAlreadyAdded = function(a) { return -1 !== cf(this.markers, a) };
    Ib.getMarkers = function() { return this.markers };
    Ib.getBounds = function() {
        var a = this.get("center");
        if (!a) return null;
        var b = {},
            c = new Ab(a, a);
        g(this.markers, function(a) { c.extend(a.get("position")) });
        b.info = c.lat.maxY == c.lat.minY && c.lng.maxX == c.lng.minX ? -1 : 0;
        b.bounds = c;
        return b
    };
    var I = {};
    I.event = d;
    I.MVCObject = h;
    I.MVCArray = Tb;
    I.LatLng = p;
    I.LatLngBounds = Ab;
    I.Size = ca;
    I.Point = F;
    I.Color = Nb;
    I.Map = sb;
    I.MapTypeId = tb;
    I.MapZoomType = af;
    I.MapTypeRegistry = Mc;
    I.MapStyleId = Ja;
    I.MapStyleRegistry = qd;
    I.ImageMapType = se;
    I.Overlay = Sc;
    I.Marker = Ud;
    I.MarkerImage = xe;
    I.MarkerShape = um;
    I.MarkerAnimation = zm;
    I.MarkerDecoration = df;
    I.Cluster = Vd;
    I.MarkerCluster = Af;
    I.Polyline = Xc;
    I.Polygon = zf;
    I.Circle = qi;
    I.InfoWindow = Ve;
    I.Label = yf;
    I.GroundOverlay = xf;
    I.ControlPosition = bd;
    I.Control = re;
    I.ALIGN = { TOP_LEFT: 5, TOP: 2, TOP_RIGHT: 3, LEFT: 4, CENTER: 13, RIGHT: 8, BOTTOM_LEFT: 10, BOTTOM: 11, BOTTOM_RIGHT: 12, isTop: function(a) { return 3 > a }, isMiddle: function(a) { return 2 < a && 6 > a }, isBottom: function(a) { return 5 < a }, isLeft: function(a) { return 0 == a % 3 }, isCenter: function(a) { return 1 == a % 3 }, isRight: function(a) { return 2 == a % 3 } };
    I.MapTypeControl = ni;
    I.NavigationControl = mi;
    I.NavigationControlStyle = Oi;
    I.ZoomControlStyle = ye;
    I.ScaleControl = wg;
    I.ScaleControlStyle = ym;
    I.TrafficLayer = Td;
    I.ServiceResultType = ic;
    I.ServiceErrorType = $;
    I.SearchService = vd;
    I.Geocoder = Ue;
    I.CityService = Te;
    I.StationService = ud;
    I.LineService = td;
    I.TransferService = Bc;
    I.DrivingService = Sd;
    I.DrivingPolicy = xm;
    I.TransferPolicy = wm;
    I.TransferActionType = Li;
    I.PoiType = vm;
    I.Panorama = Ob;
    I.PanoramaService = Se;
    I.PanoramaLayer = sd;
    I.PanoramaLabel = rd;
    var kp = function(a) {
        var b = vb ? "&withkey=1&mkey=" + vb : "&withkey=0";
        a = ch + Kg + "&c=" + (Ri ? 1 : 0) + "&d=" + ze() + "&sl=" + a + b;
        window.Object && Object.defineProperty && (a += "&es5=1");
        Yl(a)
    };
    W(I, function(a, b) { Ze(b, a) });
    var lp = new Date;
    Pg(function() {
        dh && kp(lp - dh);
        if (Si) {
            var a = "window." + Si;
            setTimeout(function() { eval('"use strict";' + a + "()") }, 0)
        }
        "undefined" != typeof navigator && -1 != navigator.userAgent.toLowerCase().indexOf("msie") && d.addDomListener(window, "unload", d.unload)
    });
    var pc = $a[1][2],
        Bg = hb,
        Ti = F,
        mp = ca,
        np = xe,
        op = df,
        pp = pc,
        qp = d,
        rp = Z,
        pb = g;
    f(Bf, Bg);
    var ha = Bf.prototype;
    ha.map_changed = function() {
        this.ready && this.destroy();
        this.get("map") && this.construct()
    };
    var eh = "gridSize minimumClusterSize maxZoom zoomOnClick averageCenter styles".split(" ");
    ha.construct = function() {
        this.ready = !0;
        var a = this.getModel();
        this.bindsTo(eh, a);
        this.addEvents()
    };
    ha.destroy = function() {
        this.ready = !1;
        this.unbinds(eh);
        this.removeEvents()
    };
    ha.changed = function(a) {
        ("gridSize" === a || "maxZoom" === a || "minimumClusterSize" === a) && this.reloadView()
    };
    ha.averageCenter_changed = function() { this.reloadView() };
    ha.calculator_changed = function() { pb(this.clusters, function(a) { a.updateIcon() }) };
    ha.styles_changed = function() { pb(this.clusters, function(a) { a.updateIcon() }) };
    ha.reloadView = function() {
        if (this.ready) {
            var a = this.clusters.slice();
            this.clusters.length = 0;
            this.resetViewport();
            a[0] && window.setTimeout(function() { pb(a, function(a) { a.remove() }) }, 50);
            this.redraw()
        }
    };
    ha.addEvents = function() {
        function a(a, c, f) { d.push(qp.addListener(a, c, rp(f, b))) }
        var b = this,
            c = b.get("map"),
            d = b._evts = [],
            f = null;
        a(c, "zoom_changed", function() {
            var a = c.get("zoom"),
                a = Wb(a, c.minZoom, c.maxZoom);
            f !== a && (f = a, this.resetViewport())
        });
        a(c, "idle", b.redraw)
    };
    ha.removeEvents = function() {
        var a = this._evts;
        a && (pb(a, function(a) { a.remove() }), delete this._evts)
    };
    ha.addMarker = function(a) {
        this.markers.push(a);
        this.redraw()
    };
    ha.removeMarker = function(a) {
        this.setMarkerDisplay(a, !0);
        this.markers.remove(a);
        a.setMap(null);
        a.isAdded && delete a.isAdded;
        this.reloadView()
    };
    ha.removeMarkers = function(a) {
        var b = this;
        pb(a, function(a) {
            a.isAdded && delete a.isAdded;
            b.markers.remove(a);
            a.setMap(null)
        });
        this.reloadView()
    };
    ha.setMarkerDisplay = function(a, b) {
        if (b && !a.get("map")) {
            var c = this.get("map");
            c && a.set("map", c)
        } else !b && a.get("map") && a.set("map", null)
    };
    ha.doClusterClick = function(a) {
        this.triggerCustomEvent("clusterclick", a.center, { markers: a.markers.slice() });
        var b = this.get("map");
        b && this.get("zoomOnClick") && (a = a.getBounds()) && !(-1 == a.info && b.getZoom() == b.maxZoom) && b.fitBounds(a.bounds)
    };
    ha.isMarkerInMapDisplay = function(a) { return a.get("map") === this.get("map") && a.get("visible") && a.get("position") };
    ha.getClusterCount = function() {
        var a = this.get("minimumClusterSize"),
            b = 0;
        pb(this.clusters, function(c) { c.getMarkers().length >= a && b++ });
        return b
    };
    ha.draw = function() {
        if (this.ready) {
            var a = this,
                b = a.get("map"),
                c = b.get("zoom"),
                d = a.get("maxZoom");
            if (d && c > d) a.markers.forEach(function(b) { a.setMarkerDisplay(b, !0) });
            else {
                if (b = b.getBounds()) {
                    var f = a.getExtendedBounds(b);
                    a.markers.forEach(function(b) {!b.isAdded && a.isMarkerInBounds(b, f) && (a.addToClosestCluster(b), b.isAdded = !0) })
                }
                a.clusters.forEach(function(a) { a.isToRedraw && (a.redraw(), a.isToRedraw = !1) })
            }
        }
    };
    ha.resetViewport = function() {
        pb(this.clusters, function(a) { a.remove() });
        this.markers.forEach(function(a) {
            a.isAdded = !1;
            a.isClustered = !1
        });
        this.clusters.length = 0
    };
    ha.addToClosestCluster = function(a) {
        var b = 4e4,
            c = null,
            d = this,
            f = a.get("position"),
            g = d.clusters;
        pb(g, function(a) {
            var g = a.get("center");
            g && (g = d.distanceBetweenPoints(g, f), g < b && (b = g, c = a))
        });
        c && this.isMarkerInClusterBounds(c, a) ? (c.addMarker(a), c.isToRedraw = !0) : (c = new Vd(this), c.addMarker(a), c.isToRedraw = !0, g.push(c));
        return c
    };
    ha.isMarkerInClusterBounds = function(a, b) { var c = a.get("center"); return this.getExtendedBounds(new Ab(c, c)).contains(b.get("position")) };
    ha.isMarkerInBounds = function(a, b) { return b.contains(a.get("position")) };
    ha.getExtendedBounds = function(a) {
        var b = this.get("map").get("mapCanvasProjection"),
            c = parseInt(this.get("gridSize")) || 60,
            d = a.getNorthEast(),
            f = a.getSouthWest(),
            d = b.fromLatLngToDivPixel(d);
        d.x += c;
        d.y -= c;
        f = b.fromLatLngToDivPixel(f);
        f.x -= c;
        f.y += c;
        c = b.fromDivPixelToLatLng(d);
        b = b.fromDivPixelToLatLng(f);
        a.extend(c);
        a.extend(b);
        return a
    };
    ha.distanceBetweenPoints = function(a, b) {
        if (!a || !b) return 0;
        var c = Math.PI,
            d = (b.getLat() - a.getLat()) * c / 180,
            f = (b.getLng() - a.getLng()) * c / 180,
            c = Math.sin(d / 2) * Math.sin(d / 2) + Math.cos(a.getLat() * c / 180) * Math.cos(b.getLat() * c / 180) * Math.sin(f / 2) * Math.sin(f / 2);
        return 12742 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c))
    };
    ha.getCalculator = function(a, b) {
        var c = this.get("calculator");
        if (c) return c(a, b);
        for (var c = 0, d = a.length, f = d; 0 !== f;) f = parseInt(f / 10, 10), c++;
        c = Math.min(c, b);
        return { text: d, index: c }
    };
    ha.getStyles = function() { this.get("styles") || this.getModel().set("styles", sp()); return this.get("styles") };
    var sp = function() {
            function a() {
                var a = pp + "default/imgs/markercluster/m",
                    b = [];
                pb([53, 56, 66, 78, 90], function(d, f) { b.push({ icon: new np(a + (f + 1) + ".png", new mp(d, d), new Ti(0, 0), new Ti(d / 2, d / 2)), text: new op("{num}") }) });
                return b
            }
            var b = null;
            return function() { return b || (b = a()) }
        }(),
        Qk = Bf,
        ab = window.localStorage,
        tp = ab && ab.setItem && ab.getItem,
        Ll = $a[1][1],
        Ui = $a[1][0],
        Eg = Kg,
        Ml = $a[1][3],
        ib = { set: function(a, b) { try { null != b ? ab.setItem(a, b) : ab.removeItem(a) } catch (c) { return null } }, get: function(a) { try { return ab.getItem(a) } catch (b) { return null } }, forIn: function(a) { try { for (var b in ab) a(ab[b], b) } catch (c) {} }, support: function() { return tp } },
        Ya = { main: [], common: ["main"], ea: ["common"], ec: ["common"], map: ["common"], c0: ["map"], c1: ["c0"], c3: ["c0", "common"], pc: ["c0"], c2: ["map"], c4: ["map"], oy: ["map", "common"], layers: ["map"], marker: ["map"], infowin: ["map"], label: ["map", "common"], poly: ["map"], pe: ["poly"], sv: ["map"], autocomplete: ["sv"], drawingimpl: ["map"], dmimpl: ["map"], pano: ["common"], c5: ["common"], eb: ["main"], place: ["main"], geometry: ["main"], drawing: ["main"], convertor: ["main"] },
        Nl = Ui + "c/=/",
        Ol = Ui,
        Cg = 5,
        fh = {},
        Jb = {},
        gh = {},
        Qb;
    for (Qb in Ya)
        if (Ya.hasOwnProperty(Qb)) {
            var Of = Ya[Qb];
            Of[0] && (fh[Of[0]] = !0);
            gh[Qb] = [];
            Jb[Qb] = Jb[Qb] || [];
            for (var hh = Of.length; hh--;) {
                var ih = Of[hh];
                Jb[ih] ? Jb[ih].push(Qb) : Jb[ih] = [Qb]
            }
        }
    var zc = {},
        Dd = {},
        jh, We = "QMAPI_",
        Rl = Eg.split(/\./).join(""),
        kh = {},
        wi = function(a, b) {
            if (!zc.hasOwnProperty(a)) {
                var c = Ya[a],
                    d = Jb[a],
                    f = Pl(c.length, function() {
                        var c = b;
                        jh = a;
                        fh[a] && (c += ";(0,function(){return eval(arguments[0])})");
                        c = Dd[Ya[a][0]](c);
                        Dd[a] || (Dd[a] = c);
                        zc.hasOwnProperty(a) || (zc[a] = void 0);
                        for (var c = gh[a], f = 0, g = c.length; f < g; f++) c[f](zc[a]);
                        for (c = d.length; c--;)
                            if (f = d[c], kh[f]) kh[f]()
                    });
                kh[a] = f;
                for (var g = c.length; g--;) zc.hasOwnProperty(c[g]) && f();
                ib.support() && (c = We + Eg.split(/\./).join("") + "_" + a, !ib.get(c) && b && ib.set(c, b))
            }
        };
    window.__cjsload = wi;
    var Dg = {},
        Cf = [],
        Df;
    ib.support() && Ql();
    var T = {
        $require: function(a, b, c) { zc.hasOwnProperty(a) ? (a = zc[a], b(void 0 === c ? a : a[c])) : (vi(a), gh[a].push(void 0 === c ? b : function(a) { b(a[c]) })) },
        $initMain: function(a, b) {
            Dd[a] = b;
            Dg[a] = !0;
            zc[a] = void 0
        },
        $setExports: function(a) { zc[jh] = a }
    };
    T.$initMain("main", function() { return eval(arguments[0]) });
    T.$setExports(gc)
})();