vue中使用百度地图
/enableMapClick:false 表示禁止地图内景点信息点击// 设置地图允许的最大最小级别// 开启鼠标滚轮缩放// 设置中心点坐标和地图级别// 创建自定义标记 参数:自定义图片路径 大小 偏移量)// 根据坐标批量生成自定义图标点// 创建点// 创建标注// 将标注添加到地图中// 给标记点添加点击事件执行想进行的操作(经个人测试在此处注册点击事件效果最佳,该有的数据项都可以获取
·
1.安装插件
yarn add vue-baidu-map --save
2.在main.js注册
import baiduMap from 'vue-baidu-map'
Vue.use(baiduMap, {
// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
ak: ''
})
3.在页面使用
<baidu-map
@ready="init"
class="baiduMap"
id="cfbaiduMap"
scroll-wheel-zoom//允许缩放
>
</baidu-map>
设置一个固定的宽高
4.百度地图初始化函数及批量生成自定义图标点
init({ BMap, map }) {
//enableMapClick:false 表示禁止地图内景点信息点击
map = new BMap.Map('baiduMap', { enableMapClick: false })
// 设置地图允许的最大最小级别
map.setMinZoom(5)
map.setMaxZoom(20)
// 开启鼠标滚轮缩放
map.enableScrollWheelZoom(true)
// 设置中心点坐标和地图级别
map.centerAndZoom(this.city, 14)
// 创建自定义标记 参数:自定义图片路径 大小 偏移量
const icon = new BMap.Icon(
require('./assets/image/youtong-icon-01.png'),
new BMap.Size(20, 30),
{ anchor: new BMap.Size(0, 0) }
)
// 根据坐标批量生成自定义图标点
this.cityData.forEach((item) => {
// 创建点
const point = new BMap.Point(item.enti_lnt, item.enti_lat)
// 创建标注
const marker = new BMap.Marker(point, { icon: icon })
// 将标注添加到地图中
map.addOverlay(marker)
// 给标记点添加点击事件
marker.addEventListener('click', (e) => {
执行想进行的操作(经个人测试在此处注册点击事件效果最佳,该有的数据项都可以获取)
})
})
},
5.需求1:切换中心点
// 创建一个函数处理缩放变化
this.fn = () => {
map.centerAndZoom(this.city, 16)
}
// 用函数重新执行中心点,哪里用哪里调
6.需求2:鼠标滑过自定义图标改变
// 创建一个新图标
const icon1 = new BMap.Icon(
require('./assets/image/youtong-icon-03.png'),
new BMap.Size(20, 30),
{ anchor: new BMap.Size(0, 0) }
)
// 创建一个函数处理图标更换(这里我使用的是递归的方式)
let marker1 = ''
this.fnIcon = (data, val) => {
marker1 = new BMap.Marker(data, { icon: icon1 })
map.addOverlay(marker1)
marker1.addEventListener('mouseout', () => {
map.removeOverlay(marker1)
const marker = new BMap.Marker(data, { icon: icon })
map.addOverlay(marker)
map.closeInfoWindow(val, data)
marker.addEventListener('mouseover', () => {
map.openInfoWindow(data, val)
this.fnIcon(data, val)
})
})
}
需求3:鼠标滑过展示信息窗口
// 注册一个信息窗口
const opts = {
width: 100, // 信息窗口宽度
height: 50, // 信息窗口高度
message: '提示信息'
}
const infoWindow = new BMap.InfoWindow(item.enti_name, opts)
marker.addEventListener('mouseover', () => {
map.openInfoWindow(infoWindow, point)
})
marker.addEventListener('mouseout', () => {
map.closeInfoWindow(infoWindow, point)
})
更多推荐
已为社区贡献1条内容
所有评论(0)