vue 使用百度地图(marker,infowindow)

本文介绍如何在Vue项目中集成百度地图API并实现自定义样式、添加比例尺控件及Marker标注等功能。通过具体代码示例展示了地图初始化、设置坐标点与展示级别、使用自定义图标及添加点击事件等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue使用的是vue2,脚手架是vue-cli3

首先 在public文件夹的index.html中引入百度地图api(需要去官网(jspopularGL | 百度地图API SDK)申请密钥)

<script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=(密钥)"></script>

这次使用的是1.0版本的webgl 因为要使用自定义样式

然后直接在vue文件中使用

<template>
  <div>
    <div id="container"></div> 
  </div>
</template>
<script>
export default {
    name: "baidu-map",
    data() {
       return {
          map:null
        };
    },
    mounted(){
        this.map = new BMapGL.Map('container') //创建一个地图实例
        this.map.centerAndZoom(new BMapGL.Point(166.6666,36.6666), 12); //设置坐标点和展示级别
        this.map.setMapStyleV2({
          styleId:'b3a455df90100869d7f9ed26e438fffe' //样式ID
        });
         
        this.map.enableScrollWheelZoom(true) // 允许地图可被鼠标滚轮缩放

        var scaleCtrl = new BMapGL.ScaleControl();  // 添加比例尺控件
        this.map.addControl(scaleCtrl);  

        //创建图标
        let myIcon = new BMapGL.Icon('图片地址', new BMapGL.Size(51, 60));
        // 创建Marker标注,使用图标
        let point = new BMapGL.Point('lng的值','lat的值');
        let marker = new BMapGL.Marker(point, {
            icon: myIcon
        });
        // 将标注添加到地图
        this.map.addOverlay(marker);

        // 信息窗口内容----点击图标打开信息窗口
        let opts = {
            width : 255,     // 信息窗口宽度
            height: 190,     // 信息窗口高度
        }
        let content=` <div class="alarmDiv">
                        <div class="imgbj">
                          <div class="imgtitle">内容</div>
                        </div>
                        <p>标题</p>
                      </div>`;
        let infoWindow = new BMapGL.InfoWindow(content, opts);  // 创建信息窗口对象 
        marker.addEventListener("click", () => {          
          this.map.openInfoWindow(infoWindow, point); //开启信息窗口
        });
    }

}
</script>

修改信息窗的样式

/*修改地图信息窗口对象样式*/  
.BMap_bubble_pop{
    background:#001D4F !important; 
    color:#FFFFFF !important;
    border:0 !important;
    margin-top:30px;
    margin-left: -33px;
}
/*替换剪头*/  
img[src="http://webmap0.bdimg.com/image/api/iw_tail.png"]{
    opacity:.7;
    width: 20px !important;
    height: 15px !important;
    top:188px !important;
    left: 126px !important;
    filter:alpha(opacity=70);
    content: url('~@/assets/icon/jt.png');
}

您好!对于Vue项目中使用高德地图marker点击跳转页面的需求,您可以按照以下步骤进行操作: 1. 首先,确保您已经成功引入了高德地图相关的 JavaScript API,并在Vue项目中初始化地图组件。 2.Vue组件中,您可以通过创建一个`InfoWindow`组件来实现marker的点击事件。 ```vue <template> <div> <el-button @click="showInfoWindow">显示Marker</el-button> <el-dialog v-if="showDialog" :visible.sync="showDialog"> <!-- 在此处添加您自定义的内容,可以是跳转链接或其他操作 --> <a href="your-link">跳转页面</a> </el-dialog> </div> </template> <script> export default { data() { return { showDialog: false }; }, methods: { showInfoWindow() { this.showDialog = true; } } }; </script> ``` 3. 在地图初始化后,创建并添加Marker时,您可以通过监听marker的`click`事件来触发`showInfoWindow`方法,显示弹窗。 ```vue // 在合适的钩子函数中初始化地图,并添加Marker mounted() { // 初始化地图 // ... // 创建并添加Marker const marker = new AMap.Marker({ position: [longitude, latitude], map: mapInstance // mapInstance为地图实例 }); // 监听marker的click事件 marker.on('click', () => { this.showInfoWindow(); }); }, ``` 在上述示例中,点击"显示Marker"按钮将会弹出对话框,您可以在对话框中添加自定义的内容,如跳转链接或其他操作。请注意,在`<a href="your-link">跳转页面</a>`处,将"your-link"替换为您想要跳转的链接。 希望能对您有所帮助!如果有任何问题,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值