Vue中加载百度地图
2024-08-31 23:41:03
借助百度地图的 LocalSearch 和 Autocomplete 两个方法
实现方式:通过promise以及百度地图的callback回调函数
map.js
1 export function MP(ak) {
2 return new Promise(function (resolve, reject) {
3 window.init = function () {
4 resolve(BMap)
5 }
6 var script = document.createElement("script");
7 script.type = "text/javascript";
8 script.src = "http://api.map.baidu.com/api?v=2.0&ak="+ak+"&callback=init";
9 script.onerror = reject;
10 document.head.appendChild(script);
11 })
12 }
使用
1 <template>
2 <input type="text" id="suggestId" name="address_detail" placeholder="如门牌号等" v-model="address_detail" class="input_style">
3 <div id="allmap"></div>
4 </template>
5 <script>
6 import {MP} from '../../map'
7
8 data(){
9 return{
10 address_detail: null, //详细地址
11 userlocation:{lng:"",lat:""},
12 }
13 },
14 mounted(){
15 this.$nextTick(function () {
16 MP("你的ak").then( BMap => {
17 var th = this
18 var map = new BMap.Map("allmap"); // 创建Map实例
19 var point = new BMap.Point(116.404, 39.915); // 创建点坐标
20 map.centerAndZoom(point,15);
21 map.enableScrollWheelZoom();
22 var ac = new BMap.Autocomplete( //建立一个自动完成的对象
23 {"input" : "suggestId"
24 ,"location" : map
25 })
26 var myValue
27 ac.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件
28 var _value = e.item.value;
29 myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
30 this.address_detail = myValue
31 setPlace();
32 });
33
34 function setPlace(){
35 map.clearOverlays(); //清除地图上所有覆盖物
36 function myFun(){
37 th.userlocation = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
38 map.centerAndZoom(th.userlocation, 18);
39 map.addOverlay(new BMap.Marker(th.userlocation)); //添加标注
40 }
41 var local = new BMap.LocalSearch(map, { //智能搜索
42 onSearchComplete: myFun
43 });
44 local.search(myValue);
45 }
46 })
47 })
48 },
49 </script>
效果
最新文章
- jquery复选框checkbox实现删除
- Android Fragment
- JavaScript Patterns 6.2 Expected Outcome When Using Classical Inheritance
- Linux 下安装配置 JDK7
- Android中常见的MVC模式
- The Contiki build system 编译系统
- android小知识之中如何获取当前时间
- C#中级-从零打造基于Socket在线升级模块
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxError Exception
- Servlet 使用ServletConfig对象来配置Servlet
- idea开发swing(二)
- 菜鸟教程之工具使用(五)——JRebel与Windows服务的Tomcat集成
- ARC 之内存转换
- poj1191 棋盘分割【区间DP】【记忆化搜索】
- 我与ARM的那些事儿1初识ARM
- DDL-表的管理
- asp.net 遍历文件夹下全部子文件夹并绑定到gridview上
- java网络编程3-Socket
- LeetCode:路径总和【112】
- CCCC L1-002. 打印沙漏【图形打印】
热门文章
- hdu 2191 珍惜现在,感恩生活(多重背包)
- 禁用root直接远程登录,使用普通账号登录后再切换root
- 【Python+postman接口自动化测试】(4)HTTP 协议
- OpenYurt 与 FabEdge 集成验证——云边数据面通信初试
- git rebase 合并提交
- C++getline()
- liunx下安装mysql(8.0.27)
- [luogu5564]Say Goodbye
- [spojRNG]Random Number Generator
- [bzoj4650]优秀的拆分