vue 百度地图自定义信息窗口
时间: 2023-09-24 13:03:21 浏览: 155
Vue百度地图自定义信息窗口,可以通过以下步骤实现:
1. 安装百度地图JavaScript API库
在Vue项目中,可以通过npm安装百度地图JavaScript API库:
```
npm install bmap-jsapi
```
2. 在Vue组件中引入百度地图JavaScript API库
在Vue组件中,可以通过以下方式引入百度地图JavaScript API库:
```
import BMap from 'bmap-jsapi';
```
3. 创建百度地图实例和信息窗口
在Vue组件的`mounted`生命周期中,可以创建百度地图实例和信息窗口:
```
mounted() {
const map = new BMap.Map('map-container');
const point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15);
const marker = new BMap.Marker(point);
map.addOverlay(marker);
const infoWindow = new BMap.InfoWindow('<p>这是一个自定义信息窗口</p>');
marker.addEventListener('click', function(){
this.openInfoWindow(infoWindow);
});
}
```
在上述代码中,首先创建了一个BMap.Map实例,并定位到北京市中心点。然后创建了一个BMap.Marker实例,并添加到地图上。最后创建了一个BMap.InfoWindow实例,设置了自定义的信息窗口内容,并添加到BMap.Marker实例上。
4. 自定义信息窗口样式
为了自定义信息窗口样式,可以在创建BMap.InfoWindow实例时,传入一个样式对象,并通过CSS样式来设置信息窗口的样式:
```
const infoWindow = new BMap.InfoWindow(`
<div class="info-window">
<h3 class="title">这是一个自定义信息窗口</h3>
<p class="content">欢迎来到百度地图JavaScript API</p>
</div>
`, {
width: 300,
height: 150,
enableMessage: false
});
```
在上述代码中,通过HTML字符串构建了一个自定义信息窗口,并为其添加了CSS样式。
完整代码如下:
```
<template>
<div id="map-container" style="width: 100%; height: 500px;"></div>
</template>
<script>
import BMap from 'bmap-jsapi';
export default {
mounted() {
const map = new BMap.Map('map-container');
const point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15);
const marker = new BMap.Marker(point);
map.addOverlay(marker);
const infoWindow = new BMap.InfoWindow(`
<div class="info-window">
<h3 class="title">这是一个自定义信息窗口</h3>
<p class="content">欢迎来到百度地图JavaScript API</p>
</div>
`, {
width: 300,
height: 150,
enableMessage: false
});
marker.addEventListener('click', function(){
this.openInfoWindow(infoWindow);
});
}
}
</script>
<style>
.info-window {
background-color: #fff;
border: 1px solid #ccc;
padding: 10px;
font-size: 16px;
}
.title {
font-size: 24px;
margin-bottom: 10px;
}
.content {
margin: 0;
}
</style>
```
阅读全文