赞
踩
<!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="icon" href="<%= BASE_URL %>favicon.ico"> <title> <%= htmlWebpackPlugin.options.title %> </title> <script src="http://api.map.baidu.com/api?v=2.0&ak=xPNLWkqdUGRQNqT2ze1Hh6bGVoj0GTuk"></script> <script src="InfoBox_min.js"></script> </head> <body> <noscript> <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> </noscript> <div id="app"></div> <!-- built files will be auto injected --> </body> </html>
<template> <div class="home"> <img alt="Vue logo" src="../assets/logo.png"> <HelloWorld msg="Welcome to Your Vue.js App"/> <div id="map_canvas" style="width: 600px; height: 500px"></div> <button id="close">close</button> <button id="open">open</button> <button id="show">show</button> <button id="hide">hide</button> <button id="enableAutoPan">enableAutoPan</button> <button id="disableAutoPan">disableAutoPan</button> </div> </template> <script> // @ is an alias to /src import HelloWorld from '@/components/HelloWorld.vue' export default { name: 'Home', components: { HelloWorld }, mounted() { this.mapHandle(); }, methods: { mapHandle() { var map = new BMap.Map('map_canvas'); var poi = new BMap.Point(116.307852, 40.057031); map.centerAndZoom(poi, 16); var html = ["<div class='infoBoxContent'><div class='title'><strong>中海雅园</strong><span class='price'>均价43000</span></div>", "<div class='list'><ul><li><div class='left'><img src='house3.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>中海雅园南北通透四居室</a><p>4室2厅,205.00平米,3层</p></div><div class='rmb'>760万</div></li>", "<li><div class='left'><img src='house1.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>中海雅园四居室还带保姆间</a><p>2室1厅,112.00平米,16层</p></div><div class='rmb'>300万</div></li>", "<li><div class='left'><img src='house2.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>《有钥匙 随时看》花园水系</a><p>3室2厅,241.00平米,16层</p></div><div class='rmb'>400万</div></li>", "<li><div class='left'><img src='house3.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>富力城D区正规楼王大三居</a><p>3室3厅,241.00平米,17层</p></div><div class='rmb'>600万</div></li>", "<li class='last'><div class='left'><img src='house1.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>富力城豪,身份人士的象征</a><p>4室2厅,213.90平米,25层</p></div><div class='rmb'>700万</div></li>", "</ul></div>", "</div>" ]; var infoBox = new BMapLib.InfoBox(map, html.join(""), { boxStyle: { background: "url('tipbox.gif') no-repeat center top", width: "270px", height: "300px" }, closeIconMargin: "1px 1px 0 0", enableAutoPan: true, align: INFOBOX_AT_TOP }); var marker = new BMap.Marker(poi); console.log(marker, 'marker'); map.addOverlay(marker); infoBox.open(marker); marker.enableDragging(); $(function() { }) $("close").onclick = function() { infoBox.close(); } $("open").onclick = function() { infoBox.open(marker); } $("show").onclick = function() { infoBox.show(); } $("hide").onclick = function() { infoBox.hide(); } $("enableAutoPan").onclick = function() { infoBox.enableAutoPan(); } $("disableAutoPan").onclick = function() { infoBox.disableAutoPan(); } function $(id) { return document.getElementById(id); } } } } </script> <style scoped> .infoBoxContent { font-size: 12px; } .infoBoxContent .title { background: no-repeat; height: 42px; width: 272px; } .infoBoxContent .title strong { font-size: 14px; line-height: 42px; padding: 0 10px 0 5px; } .infoBoxContent .title .price { color: #FFFF00; } .infoBoxContent .list { width: 268px; border: solid 1px #4FA5FC; border-top: none; background: #fff; height: 260px; } .infoBoxContent .list ul { margin: 0; padding: 5px; list-style: none; } .infoBoxContent .list ul li { float: left; width: 255px; border-bottom: solid 1px #4FA5FC; padding: 2px 0; } .infoBoxContent .list ul .last { border: none; } .infoBoxContent .list ul img { width: 53px; height: 42px; margin-right: 5px; } .infoBoxContent .list ul p { padding: 0; margin: 0; } .infoBoxContent .left { float: left; } .infoBoxContent .rmb { float: right; color: #EB6100; font-size: 14px; font-weight: bold; } .infoBoxContent a { color: #0041D9; text-decoration: none; } </style>
export function loadBMap(funcName) {
var script = document.createElement("script");
script.src = "http://api.map.baidu.com/api?v=2.0&ak=xPNLWkqdUGRQNqT2ze1Hh6bGVoj0GTuk&callback=" + funcName;
document.body.appendChild(script);
}
<template> <div class="about"> <h1>This is an about page</h1> <div id="map_canvas" style="width: 600px; height: 500px"></div> <button id="close">close</button> <button id="open">open</button> <button id="show">show</button> <button id="hide">hide</button> <button id="enableAutoPan">enableAutoPan</button> <button id="disableAutoPan">disableAutoPan</button> </div> </template> <script> import { loadBMap } from "../../public/loadResources"; export default { created() { window.initBaiduMapScript = () => { var script = document.createElement("script"); script.src = "InfoBox_min.js"; document.body.appendChild(script); script.onload = () => { console.log(BMapLib); this.mapHandle(); } }; loadBMap("initBaiduMapScript"); }, methods:{ mapHandle() { var map = new BMap.Map('map_canvas'); var poi = new BMap.Point(116.307852, 40.057031); map.centerAndZoom(poi, 16); var html = ["<div class='infoBoxContent'><div class='title'><strong>中海雅园</strong><span class='price'>均价43000</span></div>", "<div class='list'><ul><li><div class='left'><img src='house3.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>中海雅园南北通透四居室</a><p>4室2厅,205.00平米,3层</p></div><div class='rmb'>760万</div></li>", "<li><div class='left'><img src='house1.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>中海雅园四居室还带保姆间</a><p>2室1厅,112.00平米,16层</p></div><div class='rmb'>300万</div></li>", "<li><div class='left'><img src='house2.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>《有钥匙 随时看》花园水系</a><p>3室2厅,241.00平米,16层</p></div><div class='rmb'>400万</div></li>", "<li><div class='left'><img src='house3.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>富力城D区正规楼王大三居</a><p>3室3厅,241.00平米,17层</p></div><div class='rmb'>600万</div></li>", "<li class='last'><div class='left'><img src='house1.jpg'/></div><div class='left'><a target='_blank' href='http://map.baidu.com'>富力城豪,身份人士的象征</a><p>4室2厅,213.90平米,25层</p></div><div class='rmb'>700万</div></li>", "</ul></div>", "</div>" ]; var infoBox = new BMapLib.InfoBox(map, html.join(""), { boxStyle: { background: "url('tipbox.gif') no-repeat center top", width: "270px", height: "300px" }, closeIconMargin: "1px 1px 0 0", enableAutoPan: true, align: INFOBOX_AT_TOP }); var marker = new BMap.Marker(poi); console.log(marker, 'marker'); map.addOverlay(marker); infoBox.open(marker); marker.enableDragging(); $(function() { }) $("close").onclick = function() { infoBox.close(); } $("open").onclick = function() { infoBox.open(marker); } $("show").onclick = function() { infoBox.show(); } $("hide").onclick = function() { infoBox.hide(); } $("enableAutoPan").onclick = function() { infoBox.enableAutoPan(); } $("disableAutoPan").onclick = function() { infoBox.disableAutoPan(); } function $(id) { return document.getElementById(id); } } } } </script> <style scoped> .infoBoxContent { font-size: 12px; } .infoBoxContent .title { background: no-repeat; height: 42px; width: 272px; } .infoBoxContent .title strong { font-size: 14px; line-height: 42px; padding: 0 10px 0 5px; } .infoBoxContent .title .price { color: #FFFF00; } .infoBoxContent .list { width: 268px; border: solid 1px #4FA5FC; border-top: none; background: #fff; height: 260px; } .infoBoxContent .list ul { margin: 0; padding: 5px; list-style: none; } .infoBoxContent .list ul li { float: left; width: 255px; border-bottom: solid 1px #4FA5FC; padding: 2px 0; } .infoBoxContent .list ul .last { border: none; } .infoBoxContent .list ul img { width: 53px; height: 42px; margin-right: 5px; } .infoBoxContent .list ul p { padding: 0; margin: 0; } .infoBoxContent .left { float: left; } .infoBoxContent .rmb { float: right; color: #EB6100; font-size: 14px; font-weight: bold; } .infoBoxContent a { color: #0041D9; text-decoration: none; } </style>
var BMapLib = window.BMapLib = BMapLib || {}; var INFOBOX_AT_TOP = 1, INFOBOX_AT_RIGHT = 2, INFOBOX_AT_BOTTOM = 3, INFOBOX_AT_LEFT = 4; (function() { var b, a = b = a || { version: "1.5.0" }; a.guid = "$BAIDU$"; (function() { window[a.guid] = window[a.guid] || {}; a.lang = a.lang || {}; a.lang.isString = function(d) { return "[object String]" == Object.prototype.toString.call(d) }; a.lang.isFunction = function(d) { return "[object Function]" == Object.prototype.toString.call(d) }; a.lang.Event = function(d, e) { this.type = d; this.returnValue = true; this.target = e || null; this.currentTarget = null }; a.object = a.object || {}; a.extend = a.object.extend = function(f, d) { for (var e in d) { if (d.hasOwnProperty(e)) { f[e] = d[e] } } return f }; a.event = a.event || {}; a.event._listeners = a.event._listeners || []; a.dom = a.dom || {}; a.dom._g = function(d) { if (a.lang.isString(d)) { return document.getElementById(d) } return d }; a._g = a.dom._g; a.event.on = function(e, h, j) { h = h.replace(/^on/i, ""); e = a.dom._g(e); var i = function(l) { j.call(e, l) }, d = a.event._listeners, g = a.event._eventFilter, k, f = h; h = h.toLowerCase(); if (g && g[h]) { k = g[h](e, h, i); f = k.type; i = k.listener } if (e.addEventListener) { e.addEventListener(f, i, false) } else { if (e.attachEvent) { e.attachEvent("on" + f, i) } } d[d.length] = [e, h, j, i, f]; return e }; a.on = a.event.on; a.event.un = function(f, i, e) { f = a.dom._g(f); i = i.replace(/^on/i, "").toLowerCase(); var l = a.event._listeners, g = l.length, h = !e, k, j, d; while (g--) { k = l[g]; if (k[1] === i && k[0] === f && (h || k[2] === e)) { j = k[4]; d = k[3]; if (f.removeEventListener) { f.removeEventListener(j, d, false) } else { if (f.detachEvent) { f.detachEvent("on" + j, d) } } l.splice(g, 1) } } return f }; a.un = a.event.un; a.dom.g = function(d) { if ("string" == typeof d || d instanceof String) { return document.getElementById(d) } else { if (d && d.nodeName && (d.nodeType == 1 || d.nodeType == 9)) { return d } } return null }; a.g = a.G = a.dom.g; a.dom._styleFixer = a.dom._styleFixer || {}; a.dom._styleFilter = a.dom._styleFilter || []; a.dom._styleFilter.filter = function(e, h, j) { for (var d = 0, g = a.dom._styleFilter, f; f = g[d]; d++) { if (f = f[j]) { h = f(e, h) } } return h }; a.string = a.string || {}; a.string.toCamelCase = function(d) { if (d.indexOf("-") < 0 && d.indexOf("_") < 0) { return d } return d.replace(/[-_][^-_]/g, function(e) { return e.charAt(1).toUpperCase() }) }; a.dom.setStyle = function(f, e, g) { var h = a.dom, d; f = h.g(f); e = a.string.toCamelCase(e); if (d = h._styleFilter) { g = d.filter(e, g, "set") } d = h._styleFixer[e]; (d && d.set) ? d.set(f, g): (f.style[d || e] = g); return f }; a.setStyle = a.dom.setStyle; a.dom.setStyles = function(e, f) { e = a.dom.g(e); for (var d in f) { a.dom.setStyle(e, d, f[d]) } return e }; a.setStyles = a.dom.setStyles; a.browser = a.browser || {}; a.browser.ie = a.ie = /msie (\d+\.\d+)/i.test(navigator.userAgent) ? (document.documentMode || +RegExp["\x241"]) : undefined; a.dom._NAME_ATTRS = (function() { var d = { cellpadding: "cellPadding", cellspacing: "cellSpacing", colspan: "colSpan", rowspan: "rowSpan", valign: "vAlign", usemap: "useMap", frameborder: "frameBorder" }; if (a.browser.ie < 8) { d["for"] = "htmlFor"; d["class"] = "className" } else { d.htmlFor = "for"; d.className = "class" } return d })(); a.dom.setAttr = function(e, d, f) { e = a.dom.g(e); if ("style" == d) { e.style.cssText = f } else { d = a.dom._NAME_ATTRS[d] || d; e.setAttribute(d, f) } return e }; a.setAttr = a.dom.setAttr; a.dom.setAttrs = function(f, d) { f = a.dom.g(f); for (var e in d) { a.dom.setAttr(f, e, d[e]) } return f }; a.setAttrs = a.dom.setAttrs; a.dom.create = function(f, d) { var g = document.createElement(f), e = d || {}; return a.dom.setAttrs(g, e) }; b.undope = true })(); var c = BMapLib.InfoBox = function(f, e, d) { this._content = e || ""; this._isOpen = false; this._map = f; this._opts = d = d || {}; this._opts.offset = d.offset || new BMap.Size(0, 0); this._opts.boxClass = d.boxClass || "infoBox"; this._opts.boxStyle = d.boxStyle || {}; this._opts.closeIconMargin = d.closeIconMargin || "2px"; this._opts.closeIconUrl = d.closeIconUrl || "close.png"; this._opts.enableAutoPan = d.enableAutoPan ? true : false; this._opts.align = d.align || INFOBOX_AT_TOP }; c.prototype = new BMap.Overlay(); c.prototype.initialize = function(e) { var d = this; var g = this._div = a.dom.create("div", { "class": this._opts.boxClass }); a.dom.setStyles(g, this._opts.boxStyle); g.style.position = "absolute"; this._setContent(this._content); var f = e.getPanes().floatPane; f.style.width = "auto"; f.appendChild(g); this._getInfoBoxSize(); a.event.on(g, "onmousedown", function(h) { d._stopBubble(h) }); a.event.on(g, "onmouseover", function(h) { d._stopBubble(h) }); a.event.on(g, "click", function(h) { d._stopBubble(h) }); a.event.on(g, "dblclick", function(h) { d._stopBubble(h) }); return g }; c.prototype.draw = function() { this._isOpen && this._adjustPosition(this._point) }; c.prototype.open = function(d) { var e = this, f; if (!this._isOpen) { this._map.addOverlay(this); this._isOpen = true; setTimeout(function() { e._dispatchEvent(e, "open", { point: e._point }) }, 10) } if (d instanceof BMap.Point) { f = d; this._removeMarkerEvt() } else { if (d instanceof BMap.Marker) { if (this._marker) { this._removeMarkerEvt() } f = d.getPosition(); this._marker = d;!this._markerDragend && this._marker.addEventListener("dragend", this._markerDragend = function(g) { e._point = g.point; e._adjustPosition(e._point); e._panBox(); e.show() });!this._markerDragging && this._marker.addEventListener("dragging", this._markerDragging = function() { e.hide(); e._point = e._marker.getPosition(); e._adjustPosition(e._point) }) } } this.show(); this._point = f; this._panBox(); this._adjustPosition(this._point) }; c.prototype.close = function() { if (this._isOpen) { this._map.removeOverlay(this); this._remove(); this._isOpen = false; this._dispatchEvent(this, "close", { point: this._point }) } }; c.prototype.enableAutoPan = function() { this._opts.enableAutoPan = true }; c.prototype.disableAutoPan = function() { this._opts.enableAutoPan = false }; c.prototype.setContent = function(d) { this._setContent(d); this._getInfoBoxSize(); this._adjustPosition(this._point) }; c.prototype.setPosition = function(d) { this._point = d; this._adjustPosition(d); this._removeMarkerEvt() }; c.prototype.getPosition = function() { return this._point }; c.prototype.getOffset = function() { return this._opts.offset }, c.prototype._remove = function() { var d = this; if (this.domElement && this.domElement.parentNode) { a.event.un(this._div.firstChild, "click", d._closeHandler()); this.domElement.parentNode.removeChild(this.domElement) } this.domElement = null; this._isOpen = false; this.dispatchEvent("onremove") }, a.object.extend(c.prototype, { _getCloseIcon: function() { var d = "<img src='" + this._opts.closeIconUrl + "' align='right' style='position:absolute;right:0px;cursor:pointer;margin:" + this._opts.closeIconMargin + "'/>"; return d }, _setContent: function(e) { if (!this._div) { return } var d = this._getCloseIcon(); if (typeof e.nodeType === "undefined") { this._div.innerHTML = d + e } else { this._div.innerHTML = d; this._div.appendChild(e) } this._content = e; this._addEventToClose() }, _adjustPosition: function(f) { var d = this._getPointPosition(f); var e = this._marker && this._marker.getIcon(); switch (this._opts.align) { case INFOBOX_AT_TOP: if (this._marker) { this._div.style.bottom = -(d.y - this._opts.offset.height - e.anchor.height + e.infoWindowAnchor.height) - this._marker.getOffset().height + 2 + "px" } else { this._div.style.bottom = -(d.y - this._opts.offset.height) + "px" } break; case INFOBOX_AT_BOTTOM: if (this._marker) { this._div.style.top = d.y + this._opts.offset.height - e.anchor.height + e.infoWindowAnchor.height + this._marker.getOffset().height + "px" } else { this._div.style.top = d.y + this._opts.offset.height + "px" } break } if (this._marker) { this._div.style.left = d.x - e.anchor.width + this._marker.getOffset().width + e.infoWindowAnchor.width - this._boxWidth / 2 + "px" } else { this._div.style.left = d.x - this._boxWidth / 2 + "px" } }, _getPointPosition: function(d) { this._pointPosition = this._map.pointToOverlayPixel(d); return this._pointPosition }, _getInfoBoxSize: function() { this._boxWidth = parseInt(this._div.offsetWidth, 10); this._boxHeight = parseInt(this._div.offsetHeight, 10) }, _addEventToClose: function() { var d = this; a.event.on(this._div.firstChild, "click", d._closeHandler()); this._hasBindEventClose = true }, _closeHandler: function() { var d = this; return function(f) { d.close() } }, _stopBubble: function(d) { if (d && d.stopPropagation) { d.stopPropagation() } else { window.event.cancelBubble = true } }, _panBox: function() { if (!this._opts.enableAutoPan) { return } var i = parseInt(this._map.getContainer().offsetHeight, 10), o = parseInt(this._map.getContainer().offsetWidth, 10), j = this._boxHeight, d = this._boxWidth; if (j >= i || d >= o) { return } if (!this._map.getBounds().containsPoint(this._point)) { this._map.setCenter(this._point) } var e = this._map.pointToPixel(this._point), p, m, l, g = d / 2 - e.x, n = d / 2 + e.x - o; if (this._marker) { var k = this._marker.getIcon() } switch (this._opts.align) { case INFOBOX_AT_TOP: var f = this._marker ? k.anchor.height + this._marker.getOffset().height - k.infoWindowAnchor.height : 0; p = j - e.y + this._opts.offset.height + f + 2; break; case INFOBOX_AT_BOTTOM: var f = this._marker ? -k.anchor.height + k.infoWindowAnchor.height + this._marker.getOffset().height + this._opts.offset.height : 0; m = j + e.y - i + f + 4; break } panX = g > 0 ? g : (n > 0 ? -n : 0); l = p > 0 ? p : (m > 0 ? -m : 0); this._map.panBy(panX, l) }, _removeMarkerEvt: function() { this._markerDragend && this._marker.removeEventListener("dragend", this._markerDragend); this._markerDragging && this._marker.removeEventListener("dragging", this._markerDragging); this._markerDragend = this._markerDragging = null }, _dispatchEvent: function(d, e, g) { e.indexOf("on") != 0 && (e = "on" + e); var f = new a.lang.Event(e); if (!!g) { for (var h in g) { f[h] = g[h] } } d.dispatchEvent(f) } }) })();
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。