xxx.vue

<template>
<div>
<el-input v-model="inputaddr">
</el-input>
<el-button @click="mapCpm">点击</el-button>
<el-dialog :modal-append-to-body="false"
:title="textMap[dialogStatus]"
:visible.sync="mapCPM">
<baidu-map class="map"
:center="center"
:zoom="zoom"
@ready="handler"
:double-click-zoom='false'
:scroll-wheel-zoom='true'>
<bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT"
:showAddressBar="true"
:autoLocation="true"
@locationSuccess='locationSuccess'></bm-geolocation>
<bm-panorama></bm-panorama>
<bm-marker :position="center"
@dragend="dragend"
:raiseOnDrag='true'
:dragging='true'>
</bm-marker>
</baidu-map>
<el-row class="map_title">
<el-col :span=""
class="map_title_span">
<p>经度:{{locationdata.center ? locationdata.center.lng : center.lng}}</p>
<p>纬度:{{locationdata.center ? locationdata.center.lat : center.lat}}</p>
<p>地址:{{locationdata.addr}}</p>
</el-col> <el-col :span="">
<el-button type="info"
size="small"
@click="getmapdamodata()">提交</el-button>
</el-col>
</el-row>
</el-dialog> </div>
</template>
<script>
export default {
data () {
return {
fullscreenLoading: false,//地图加载动画
// 地图初始化的位置
center: { lng: 113.18088529892, lat: 23.460952009562 },
// 地图内的大小
zoom: ,
// 这个是搜索下的东西
location: '',
// 这个是选择搜索列表中数据的title以及经纬度
locationdata: {
title: '',
center: '',
addr: ''//地址
},
geolocation: "",
BMap: '',
textMap: {
map: '地图'
},
dialogStatus: 'map',
mapCPM: false,
inputaddr: ''
}
},
mounted () { },
methods: {
// 由于百度地图 JS API 只有 JSONP 一种加载方式,因此 BaiduMap 组件及其所有子组件的渲染只能是异步的。因此,请使用在组件的 ready 事件来执行地图 API 加载完毕后才能执行的代码,不要试图在 vue 自身的生命周期中调用 BMap 类,更不要在这些时机修改 model 层。
handler ({ BMap, map }) {
const loading = this.$loading({//加载动画
lock: true,
text: '动图加载中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
}); window.map = map; //注册为全局
var that = this; // map方法中的this指向不对。所有申明一个。。小细节的东西
// 刚进入页面中的定位,需要向用户授权
var geolocation = new BMap.Geolocation();
console.log(geolocation)
this.geolocation = geolocation;
geolocation.getCurrentPosition(() => {
// console.log('data')
// alert('nimamaipi')
})
geolocation.enableSDKLocation();
geolocation.getCurrentPosition(function (r) { if (this.getStatus() == BMAP_STATUS_SUCCESS) {
// 把得到的经纬度传给map,就实现了第一步我们的定位
that.center = {
lng: r.point.lng,
lat: r.point.lat
}
console.log("wang", r)
// var a = r.address.city
// var b = r.address.district
// var c = r.address.province
// var d = r.address.street
// var e = r.address.street_number // console.log(a);
// console.log(b);
// console.log(c);
// console.log(d);
// console.log(e); // var f = ''
// this.locationdata.addr = ''
// f = a + b + c + d + e
// this.locationdata.addr = f
// console.log(f); // this.locationdata.addr = r.address.city + r.address.district + r.address.province + r.address.street + r.address.street_number
// 当用户拒绝该授权的时候,依然执行
if (r.accuracy == null) {
// alert('accuracy null:'+r.accuracy);
//用户决绝地理位置授权
return;
}
} else {
console.log('failed' + this.getStatus());
}
}, { enableHighAccuracy: true })
this.BMap = BMap
loading.close();
},
mapCpm () {
//打开地图弹窗
this.dialogStatus = 'map'
this.mapCPM = true
},
locationSuccess (point, AddressComponent, marker) {
//定位成功后
console.log(point);
this.locationdata.center = point.point
this.locationdata.addr = point.addressComponent.city + point.addressComponent.district + point.addressComponent.province + point.addressComponent.street + point.addressComponent.streetNumber
this.center = point.point
},
// 选择localtion的值
// getlocalsearch (e) {
// this.locationdata.title = e.address + e.title;
// this.locationdata.center = e.point;
// },
dragend (type, target, pixel, point) { //拖拽结束触发
this.locationdata.center = type.point;
// this.position = type.point
const _this = this
const gc = new this.BMap.Geocoder()
gc.getLocation(type.point, function (rs) {
console.log("aaaaaaaaaaaaaaa", rs)
_this.locationdata.addr = rs.address
})
},
// 确定该信息然后存在session中
getmapdamodata () {
this.inputaddr = this.locationdata.addr
this.mapCPM = false
} }
}
</script>
<style>
.map {
width: %;
height: 500px;
}
.anchorBL {
display: none;
}
.map_title {
display: flex;
justify-content: center;
align-items: center;
padding: .1533rem;
}
</style>

main.js

import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
ak: '百度ak'
});

更新

<template>
<div> <el-button @click="mapCpm">点击</el-button>
<el-dialog :modal-append-to-body="false"
:title="textMap[dialogStatus]"
:visible.sync="mapCPM"> <baidu-map class="map"
:center="center"
:zoom="zoom"
@ready="handler"
:double-click-zoom='false'
:scroll-wheel-zoom='true'
@click="clickBaiDuMap"> <bm-view class="map"></bm-view>
<bm-control :offset="{width: '10px', height: '10px'}">
<bm-auto-complete v-model="keyword"
:sugStyle="{zIndex: 0}">
<el-input placeholder="请输入地名关键字"
v-model="keyword"></el-input> <!-- 这里指代一个自定义搜索框组件 -->
<bm-local-search :keyword="keyword"
:auto-viewport="true"
style="width:0px;height:0px;opacity:0"></bm-local-search> </bm-auto-complete>
</bm-control> <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT"
:showAddressBar="true"
:autoLocation="true"
@locationSuccess='locationSuccess'></bm-geolocation>
<bm-panorama></bm-panorama>
<bm-marker :position="locationdata.center"
@dragend="dragend"
:raiseOnDrag='true'
:dragging='true'>
</bm-marker>
</baidu-map>
<el-row class="map_title">
<el-col :span=""
class="map_title_span">
<p>经度:{{locationdata.center ? locationdata.center.lng : center.lng}}</p>
<p>纬度:{{locationdata.center ? locationdata.center.lat : center.lat}}</p>
<p>地址:{{locationdata.addr}}</p>
</el-col> <el-col :span="">
<el-button type="info"
size="small"
@click="getmapdamodata()">提交</el-button>
</el-col>
</el-row>
</el-dialog>
</div>
</template>
<script>
export default {
data () {
return {
keyword: '',
city: '',//输入框搜索内容
address_detail: null, //详细地址
fullscreenLoading: false,//地图加载动画
// 地图初始化的位置
center: { lng: 113.18088529892, lat: 23.460952009562 },
// 地图内的大小
zoom: ,
// 这个是搜索下的东西
location: '',
// 这个是选择搜索列表中数据的title以及经纬度
locationdata: {
title: '',
center: '',
addr: ''//地址
},
geolocation: "",
BMap: '',
textMap: {
map: '地图'
},
dialogStatus: 'map',
mapCPM: false,
inputaddr: ''
}
},
mounted () { },
methods: {
// 由于百度地图 JS API 只有 JSONP 一种加载方式,因此 BaiduMap 组件及其所有子组件的渲染只能是异步的。因此,请使用在组件的 ready 事件来执行地图 API 加载完毕后才能执行的代码,不要试图在 vue 自身的生命周期中调用 BMap 类,更不要在这些时机修改 model 层。
handler ({ BMap, map }) {
const loading = this.$loading({//加载动画
lock: true,
text: '动图加载中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
}); window.map = map; //注册为全局
var that = this; // map方法中的this指向不对。所有申明一个。。小细节的东西
// 刚进入页面中的定位,需要向用户授权
var geolocation = new BMap.Geolocation();
console.log(geolocation)
this.geolocation = geolocation;
geolocation.getCurrentPosition(() => {
// console.log('data')
// alert('nimamaipi')
})
geolocation.enableSDKLocation();
geolocation.getCurrentPosition(function (r) { if (this.getStatus() == BMAP_STATUS_SUCCESS) {
// 把得到的经纬度传给map,就实现了第一步我们的定位
that.center = {
lng: r.point.lng,
lat: r.point.lat
}
console.log("wang", r) var a = r.address.city
var b = r.address.district
var c = r.address.province
var d = r.address.street
var e = r.address.street_number console.log(a);
console.log(b);
console.log(c);
console.log(d);
console.log(e); var f = ''
//this.locationdata.addr = ''
f = a + b + c + d + e
window.title = f;//注册为全局
// this.locationdata.addr = f
console.log(f);
// this.locationdata.addr = r.address.city + r.address.district + r.address.province + r.address.street + r.address.street_number
// 当用户拒绝该授权的时候,依然执行
if (r.accuracy == null) {
// alert('accuracy null:'+r.accuracy);
//用户决绝地理位置授权
return;
}
} else {
console.log('failed' + this.getStatus());
}
}, { enableHighAccuracy: true })
this.BMap = BMap
loading.close();
},
mapCpm () {
//打开地图弹窗
setTimeout(() => {
if (window.title != '' && window.title != null) {
this.locationdata.addr = window.title
window.title = ''
}
}, ) console.log(window.title); this.dialogStatus = 'map'
this.mapCPM = true
},
locationSuccess (point, AddressComponent, marker) {
//定位成功后
console.log(point);
this.locationdata.center = point.point
this.locationdata.addr = point.addressComponent.city + point.addressComponent.district + point.addressComponent.province + point.addressComponent.street + point.addressComponent.streetNumber
this.center = point.point
},
// 选择localtion的值
// getlocalsearch (e) {
// this.locationdata.title = e.address + e.title;
// this.locationdata.center = e.point;
// },
dragend (type, target, pixel, point) { //拖拽结束触发
this.locationdata.center = type.point;
// this.position = type.point
const _this = this
const gc = new this.BMap.Geocoder()
gc.getLocation(type.point, function (rs) {
console.log("aaaaaaaaaaaaaaa", rs)
_this.locationdata.addr = rs.address
})
},
// 确定该信息然后存在session中
getmapdamodata () {
this.inputaddr = this.locationdata.addr
this.mapCPM = false
},
clickBaiDuMap (type, target, point, pixel, overlay) {
console.log(type);
console.log(target); console.log(point); console.log(pixel); console.log(overlay);
this.locationdata.center = type.point;
// this.center = type.point
// this.position = type.point
const _this = this
const gc = new this.BMap.Geocoder()
gc.getLocation(type.point, function (rs) {
console.log("aaaaaaaaaaaaaaa", rs)
_this.locationdata.addr = rs.address
})
}, }
}
</script>
<style scoped>
.map {
width: %;
height: 500px;
}
.anchorBL {
display: none;
}
.map_title {
display: flex;
justify-content: center;
align-items: center;
padding: .1533rem;
}
</style>

vue中引入百度地图的更多相关文章

  1. VUE 中引入百度地图(vue-Baidu-Map)

    1.安装 $ npm install vue-baidu-map --save 2.全局注册,在main.js中引入以下代码 import BaiduMap from 'vue-baidu-map' ...

  2. Vue中使用百度地图——设置地图标注

    知识点:创建Map实例,为指定的位置设置标注 参考博客:https://www.cnblogs.com/liuswi/p/3994757.html 1.效果图:初始化地图,设置指定经纬度为地图中心点坐 ...

  3. vue中实现百度地图

    1.项目根目录下下载百度地图插件 npm install vue-baidu-map –save 2.在首页index.html中引入百度地图: <script type="text/ ...

  4. Vue --》 如何在vue中调用百度地图

    1.项目根目录下下载百度地图插件 npm install vue-baidu-map –save 2.在首页index.html中引入百度地图: <script type="text/ ...

  5. Vue中使用百度地图——根据输入框输入的内容,获取详细地址

    知识点:在Vue.js项目中调用百度地图API,实现input框,输入地址,在百度地图上定位到准确地址,获得到经纬度 参考博客:  百度地图的引用,初步了解参考博客:http://blog.csdn. ...

  6. vue中使用百度地图vue-baidu-map

    安装 npm install vue-baidu-map --save 全局注册 全局注册将一次性引入百度地图组件库的所有组件.需在入口文件main.js中引入vue-baidu-map import ...

  7. vue中引入百度统计

    vue作为单页面的,引入百度统计,需要注意不少. 一.基本的流量统计 在index.html 入口文件中引入百度统计生成的一连串代码: var _hmt = _hmt || []; (function ...

  8. react项目中引入百度地图打包报错问题

    一.我正常引入百度地图,调试时候是好使的,但是打包时候就报错 引入方法如下: 报错如图 正常调试是好使的,但是打包报这个错,解析不了这个BMap,那么怎么办呢? 然后我就转用了window办法,虽然因 ...

  9. vue 中结合百度地图获取当前城市

    首先需要去百度地图开发者平台申请 ak http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5 在index.html 中引入script ...

随机推荐

  1. LOJ#6229. 这是一道简单的数学题(莫比乌斯反演+杜教筛)

    题目链接 \(Description\) 求\[\sum_{i=1}^n\sum_{j=1}^i\frac{lcm(i,j)}{gcd(i,j)}\] 答案对\(10^9+7\)取模. \(n< ...

  2. 关于kmp算法

    字符串匹配算法简称kmp 日常安利大佬博客(真的是一篇很好的文章) 觉得百度百科讲的也挺好 就是给出两个字符串a, b 求b在a中的所有位置 next数组:代表当前字符之前的字符串中,有多大长度的相同 ...

  3. 实现mysql的读写分离(mysql-proxy)____1(mysql的主从复制,基于gtid的主从复制,半同步复制,组复制)

    主从复制原理: 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生成一个 log ...

  4. leetcode:146. LRU缓存机制

    题目描述: 运用你所掌握的数据结构,设计和实现一个  LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - 如果密钥 ( ...

  5. clumsy 模拟网络丢包延迟

    https://www.cnblogs.com/bodboy/p/6015530.html clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现 ...

  6. Feign进行文件上传+表单调用

    Feigin默认是不支持文件上传和表单提交的,需要做一些配置才能支持. 1.feign依赖 图中红色为form支持必须的jar. 2.添加自定义Encoder类: import static java ...

  7. redis 链接

    一.redis启动: 本地启动:redis-cli 远程启动:redis-cli -h host -p port -a password 例如:redis-cli -h r-2mlmkmxu7.red ...

  8. Centos7.6使用yum安装PHP7.2

    Centos7.6使用yum安装PHP7.2 1.安装源 安装php72w,是需要配置额外的yum源地址的,否则会报错不能找到相关软件包. php高版本的yum源地址,有两部分,其中一部分是epel- ...

  9. (转nginx不浏览直接下载文件的解决方法

    原文:https://www.zhan200.com/xwt/39.html 如果nginx配置不对,就会造成部分文件,在浏览器中不是直接预览,而是进行了下载.修改的方法是修改配置文件.具体解决方法如 ...

  10. roboware 常见操作和问题

    博客参考:https://blog.csdn.net/u013528298/article/details/88052470 1. build中错误位置定位方式 按住“CTRL”键并点击错误提示的链接 ...