代码很整合很简单,主要记录操作思路,注意回调百度地图api的回调函数

@/utils/map.js

let Map = {
BaiDuMap(ak) {
return new Promise(function (resolve, reject) {
window.init = function () {
resolve(BMap)
}
const script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://api.map.baidu.com/api?v=2.0&ak=" + ak + "&callback=init";
script.onerror = reject;
document.head.appendChild(script);
const script2 = document.createElement("script");
script2.type = "text/javascript";
script2.src = "http://api.map.baidu.com/library/CurveLine/1.5/src/CurveLine.min.js";
script2.onerror = reject;
document.head.appendChild(script2);
})
} } export {
Map
}

代码中使用(主要是覆盖物(自定义)的创建与清除)

<template>
<div class="main" :style="'height: ' + mainHeight + 'px;'">
<div class="side_bar">
清除地图上的覆盖物 <em class="ball ball-red" @click="clearOverlays()">1</em>
&nbsp;
添加弧线 <em class="ball ball-red" @click="addCurve()">2</em>
&nbsp;
添加自定义覆盖物 <em class="ball ball-red" @click="addNodeNumber()">3</em>
&nbsp;
添加图片 <em class="ball ball-red" @click="addImgMarker()">4</em>
</div>
<div id="map_box" class="map_box"></div>
<div class="fun_bar">456</div>
</div>
</template> <script>
import {Map} from '@/utils/map.js'; export default {
name: "CustomTrip",
data() {
return {
bodyHeight: window.innerHeight,
mainHeight: (window.innerHeight - 60),
baiDuMap: {}
}
},
created() { },
mounted() {
this.$nextTick(function () {
Map.BaiDuMap("uzbYvIXkVMwO2jxjx09ZGPKeLZZgUuvO").then(BMap => {
// 创建Map实例,设置地图允许的最小/大级别;关闭地图poi可点功能
const map = new BMap.Map('map_box', {minZoom: 14, maxZoom: 18, enableMapClick: false}); const point = new BMap.Point(114.5167391743, 22.5947075654);
map.centerAndZoom(point, 16);
map.addControl(new BMap.MapTypeControl());
map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
map.enableDoubleClickZoom(true); // 开启双击滚轮缩放 this.baiDuMap = map;
})
})
},
methods: {
// 清除覆盖物
clearOverlays() {
this.baiDuMap.clearOverlays()
},
// 添加弧线
addCurve() {
const aPosition = new BMap.Point(114.5154278958, 22.5986234615),
bPosition = new BMap.Point(114.5134752476, 22.5966423480),
cPosition = new BMap.Point(114.5159643376, 22.5937102476);
const points = [aPosition, bPosition, cPosition]; const curve = new BMapLib.CurveLine(points, {
strokeColor: "#7CFC00",
strokeWeight: 5,
strokeOpacity: 1
}); //创建弧线对象
this.baiDuMap.addOverlay(curve); //添加到地图中
curve.enableEditing(); //开启编辑功能
},
// 清除弧线
clearCurve() { },
// 添加自定义覆盖物
addNodeNumber() {
const NodeNumberMarker = function (point, number) {
this._point = point;
this._number = number;
this._map = this.baiDuMap;
};
NodeNumberMarker.prototype = new BMap.Overlay();
NodeNumberMarker.prototype.initialize = function (map) {
this._map = map;
const em = this._em = document.createElement("em");
em.style.position = "absolute";
em.style.zIndex = BMap.Overlay.getZIndex(this._point.lat);
em.style.background = "url(http://oygr66c0t.bkt.clouddn.com/icon/blank.png) no-repeat";
em.style.display = "inline-block";
em.style.width = "22px";
em.style.height = "29px";
em.style.verticalAlign = "middle";
em.style.overflow = "hidden";
em.style.textAlign = "center";
em.style.fontWeight = "bold";
em.style.fontSize = "12px";
em.style.lineHeight = "25px";
em.style.color = "#fff";
em.innerHTML = this._number;
map.getPanes().labelPane.appendChild(em);
return em;
};
NodeNumberMarker.prototype.draw = function () {
const map = this._map;
const pixel = map.pointToOverlayPixel(this._point);
this._em.style.left = (pixel.x - 12) + "px";
this._em.style.top = (pixel.y - 28) + "px";
};
const nodeNumberOverlay = new NodeNumberMarker(new BMap.Point(114.5154278958, 22.5986234615), 1);
// 添加节点数覆盖物到地图上
this.baiDuMap.addOverlay(nodeNumberOverlay);
const nodeNumberOverlay2 = new NodeNumberMarker(new BMap.Point(114.5134752476, 22.5966423480), 2);
// 添加节点数覆盖物到地图上
this.baiDuMap.addOverlay(nodeNumberOverlay2);
const nodeNumberOverlay3 = new NodeNumberMarker(new BMap.Point(114.5159643376, 22.5937102476), 3);
// 添加节点数覆盖物到地图上
this.baiDuMap.addOverlay(nodeNumberOverlay3);
},
// 清除自定义覆盖物 TODO
clearNodeNumber() { },
// 添加图标
addImgMarker() {
//创建小狐狸
const point = new BMap.Point(114.5208566868, 22.5912139508);
const myIcon = new BMap.Icon("http://lbsyun.baidu.com/jsdemo/img/fox.gif", new BMap.Size(300, 157));
const marker = new BMap.Marker(point, {icon: myIcon}); // 创建标注
this.baiDuMap.addOverlay(marker); // 将标注添加到地图中
} }
} </script> <style lang="scss" scoped>
.main {
width: 100%;
height: 100%;
overflow: hidden;
position: relative;
} .side_bar {
/*width: 325px;*/
/*height: 100%;*/
/*left: 0;*/
/*top: 0;*/
/*border-right: 1px solid #dfdfdf;*/
/*box-shadow: 5px 2px 5px rgba(0,0,0,0.1);*/
/*padding-right: 5px;*/
/*z-index: 500;*/
} .map_box {
width: auto;
height: 100%;
/*margin: 0 301px 0 331px;*/
position: relative;
text-align: left;
} .fun_bar {
/*width: 300px;*/
/*height: 100%;*/
/*right: 0;*/
/*top: 0;*/
/*border-left: 1px solid #dfdfdf;*/
/*box-shadow: -5px 0 5px rgba(0,0,0,0.1);*/
} .ball-red {
background: url("http://s0.beibaotu.com/images/plan/edit/marker-red.png") no-repeat;
} .ball {
display: inline-block;
width: 22px;
height: 29px;
vertical-align: middle;
overflow: hidden;
text-align: center;
font-weight: bold;
font-size: 12px;
line-height: 25px;
color: #fff;
}
</style>

示例图

最终可以做出点有意思的东西玩玩:

Vue2.x整合百度地图JavaScript方案的更多相关文章

  1. 百度地图JavaScript API覆盖物旋转时出现偏移

    在项目中,调用百度地图JavaScript API,做覆盖物的旋转再添加到地图上,结果出现偏移了. 调试过程中的效果图: 发现图片的旋转并不是按车子的中心来的,而是之外的一个点.最后发现犯了一个很细节 ...

  2. 百度地图JavaScript API使用

    最近在完成优达学城前端开发(入门)课程的P4项目中,要求调用google地图进行交互,项目已提供部分js代码和html代码.但在申请google地图API密钥时由于网络等原因,打不开或者连接超时,所以 ...

  3. 百度地图JavaScript API经纬度查询-MAP

    百度地图JavaScript API经纬度查询-MAP-ABCDEFGHIJKMHNOPQRSTUVWXYZ: 搜索:<input type="text" size=&quo ...

  4. Ehcart整合百度地图

    最近上班有些时间,学习了一下Ehcart的知识,自己制作了一份Ehcart整合百度地图的示例代码. GItHub地址:https://github.com/TianYanFd/tianjin-powe ...

  5. 【百度地图JavaScript API】手机端浏览器定位的实现

    [百度地图JavaScript API]手机端浏览器定位的实现 https://blog.csdn.net/xiao190128/article/details/72579476

  6. 百度地图JavaScript开发入门先知

    最近项目紧急开发了一些百度地图的功能,觉得百度地图实数强大!于是今天不忙总结一下,看到不错的文章先转载. 文章出处:https://www.opengps.cn/Blog/View.aspx?id=1 ...

  7. 关于ArcGis for javascript整合百度地图 天地图 高德地图进行搜索

    1.ArcGis for javascript整合百度地图搜索 1.1.首先引入百度地图的api <!-- 引入百度地图API --> <script type="text ...

  8. 百度地图 Javascript API 笔记

    因为最近的一个项目用到,所以自己整理了一下遇到的一些坑 自己写了一个类库来二次封装用于调起常用的功能:https://github.com/iRuxu/iBMap 快速文档链接 Javascript ...

  9. 最全面的百度地图JavaScript离线版开发

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5822231.html 项目要求web版百度地图要离线开发.这里总结下自己的开发过程和经验. 大概需求是:每辆 ...

随机推荐

  1. BZOJ2590 [Usaco2012 Feb]Cow Coupons

    好吧...想了半天想错了...虽然知道是贪心... 我们每次找没有被买的两种价格最小的牛,比较a = 当前差价最大的 + 当前优惠券价格最小的牛与b = 当前非优惠券价格最小的牛 所以...我们要 先 ...

  2. ehlib 安装

    EhLibProjGroup110.groupproj,依次编译所有的包,再安装所有的dcl设计时包. == EhLib 7.0.133 Full Source 使用安装器EhLibInstaller ...

  3. Spring MVC和Spring Data JPA之获取数据表数据放在List集合,显示在JSP页面

    涉及到很多xml配置没写:只写具体实现的所有类 1.实体类 对应数据表SYS_SBGL, 主键是SBBM,主键是自动生成的uuid 数据表内容如下(有图有真相): package com.jinhet ...

  4. android开源项目集合

    ZXing http://code.google.com/p/zxing/ 条形码.二维码 K-9 Mail http://code.google.com/p/k9mail/ 邮件客户端 Sipdro ...

  5. 不挣扎了,MVC验证错误信息汇总是酱紫的

    public static string GetModelErros(this ModelStateDictionary dic) { var sb = new StringBuilder(); va ...

  6. MySQL主从数据一致性问题修复

    MySQL主从数据一致性问题修复 前面,我们使用pt-table-checksum 可以检测出主从数据是否一致的问题.发现问题后,我们怎么解决这些问题,也是我们必须要会的技能. 修复主从数据一致性问题 ...

  7. 5.1 socket编程、简单并发服务器

    什么是socket? socket可以看成是用户进程与内核网络协议栈的编程接口.是一套api函数. socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机间的进程间通信. 工业上使用的为t ...

  8. Wiz写Blog? 不会再爱了,全面拥抱Markdown+Pandoc

    Wiz写Blog? 不会再爱了,全面拥抱Markdown+Pandoc 文章转载自 http://iout.in/archives/454.html 我们为什么写作? 自从人们开始写作,写作便是记录. ...

  9. [LeetCode&Python] Problem 136. Single Number

    Given a non-empty array of integers, every element appears twice except for one. Find that single on ...

  10. PHP webservice初探

    背景:在最近的开发中,为了解决公司内部系统与外部系统的对接,开始接触到了webservice接口,外部公司提供接口供我们调用,已达到数据同步的目的,因此有必要普及一下web service的知识了! ...