VUE使用百度地图API实现三维地球

Vue结合百度地图实现三维地球

小的在网上看了很多教程后,一些参数已经改变了,无法实现,因此写下本篇笔记做记录,大人多多见谅。哈哈哈~

1.环境准备

申请一个百度地图的AK用于调用百度地图的API(教程网上查找)

1.1 vue整合百度地图组件

vue有整合过百度地图的组件,但是不支持三维地球模式三维地球模型在最新的百度地图api中才有,Vue还没有整合最新的三维地球模式,React支持。

此处附上:

百度地图API(最新)地址:https://lbs.baidu.com/index.php?title=jspopularGL

VUE整合百度地图的组件地址:https://dafrok.github.io/vue-baidu-map/#/zh/index

import BaiduMap from 'vue-baidu-map'
// 引入第三方平台百度api
Vue.use(BaiduMap, {
  // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
  ak: '你申请的AK'
})

1.2 vue结合百度API实现

在vue项目中public文件夹下index.html中全局引入百度地图API

<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=你的AK"></script>

2.实际代码

2.1 部分代码如下

2.1.1 卫星图的加载
// GL版命名空间为BMapGL
// 按住鼠标右键,修改倾斜角和角度
var map = new BMapGL.Map('allmap')    // 创建Map实例
map.centerAndZoom(new BMapGL.Point(116.280190, 40.049191), 5)  // 初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom(true)     // 开启鼠标滚轮缩放
map.setMapType(BMAP_EARTH_MAP)  // BMAP_EARTH_MAP这个就是地球模式(三维的),也可以替换成其他的
2.1.2 卫星的窗口
 // 卫星站窗口
 var opts = {
     width: 250,     // 信息窗口宽度
     height: 100,    // 信息窗口高度
     title: object.stationName,  // 信息窗口标题
 }
 // 设置窗口的点击事件展示信息
 marker.addEventListener("click",function (event) {
     var infoWindow = new BMapGL.InfoWindow(object.status, opts);
     map.openInfoWindow(infoWindow, point);
 })
2.1.3 标记点

地图上创建标记点,可以点击展示信息窗口

 // 创建点 str[0], str[1] 是点的经纬度
 var point = new BMapGL.Point(str[0], str[1])
 // 地图上创建marker点
 var marker = new BMapGL.Marker(point)
 // 地图上添加点
 map.addOverlay(marker)

2.2 完整代码

我这里数据是从后端查询出来放到里面的,也可以使用假数据或者换成你们的数据。

如下:

<template>
  <div>
    <div id="allmap" style="width: 100%; height: 900px;"></div>
  </div>
</template>
<script>
    import {getAction} from '@/api/manage'
    export default {
        data() {
            return {

                mapLocationObjs: {},
                locations: []
            }
        },
        created() {
            // 默认加载show方法
            this.show();
            this.putLocations();
        },
        mounted() {
            // GL版命名空间为BMapGL
            // 按住鼠标右键,修改倾斜角和角度
            var map = new BMapGL.Map('allmap')    // 创建Map实例
            map.centerAndZoom(new BMapGL.Point(116.280190, 40.049191), 5)  // 初始化地图,设置中心点坐标和地图级别
            map.enableScrollWheelZoom(true)     // 开启鼠标滚轮缩放
            map.setMapType(BMAP_EARTH_MAP)
            window.map = map;// 创建信息窗口对象
            /*  var marker = new BMapGL.Marker(new BMapGL.Point(116.280190, 40.049191)) // 创建点
              map.addOverlay(marker)             // 将标注添加到地图中*/
        },
        methods: {
            // 获取后端的数据
            show() {
                getAction("/sate/showMap").then((res) => {
                    if (res.success) {
                        this.mapLocationObjs = res;
                        this.locations = res.result;
                        console.log(this.locations);
                        for(var i = 0; i < this.locations.length; i++){
                            // 单个卫星站对象
                            var locationObject = this.locations[i];
                            // 根据逗号分隔坐标
                            var str = this.locations[i].lla.split(',')
                            // 创建点
                            var point = new BMapGL.Point(str[0], str[1])
                            var marker = new BMapGL.Marker(point)
                            // 信息窗口展示
                            this.putWindow(marker,point,locationObject);
                            // 地图上创建点
                            map.addOverlay(marker)
                        }
                    }
                })
            },
            // 标注弹框
            putWindow(marker, point, object) {
                // 卫星站对象
                var windowInfo = object;
                // 卫星站窗口
                var opts = {
                    width: 250,     // 信息窗口宽度
                    height: 100,    // 信息窗口高度
                    title: object.stationName,  // 信息窗口标题
                }
                marker.addEventListener("click",function (event) {
                    var infoWindow = new BMapGL.InfoWindow(object.status, opts);
                    map.openInfoWindow(infoWindow, point);
                })
            }
        }
    }
</script>
<style scoped>
</style>
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vue-Baidu-Map组件本身不支持使用3D视显示地图。根据提到的引用内容,Vue-Baidu-Map组件不支持最新的百度地图API中的三维地球模式(BMAP_EARTH_MAP)。但是,如果您想在Vue项目中使用百度地图3D视角,可以通过在Vue项目的public文件夹下的index.html中全局引入百度地图API,并使用BMapGL命名空间来实现。 具体步骤如下: 1. 在Vue项目的public文件夹下的index.html文件中,全局引入百度地图API,添加以下代码: ``` <script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=你的AK"></script> ``` 请将其中的"你的AK"替换为您在百度地图开发者平台申请的密钥。 2. 在Vue项目的组件中,使用BMapGL命名空间来创建地图实例,并设置地图的属性和事件,示例代码如下: ```javascript // 引入百度地图API import BMapGL from 'BMapGL'; export default { mounted() { // 创建地图实例 var map = new BMapGL.Map('mapContainer'); // 设置地图的中心点和缩放级别 var point = new BMapGL.Point(116.280190, 40.049191); map.centerAndZoom(point, 5); // 开启鼠标滚轮缩放 map.enableScrollWheelZoom(true); // 设置地图类型为三维地球模式 map.setMapType(BMapGL.BMAP_EARTH_MAP); // 添加其他的地图操作和交互逻辑 } } ``` 请确保您已经正确安装了BMapGL库,以便能够使用BMapGL命名空间。 通过以上步骤,您就可以在Vue项目中实现使用百度地图3D视角了。注意,这里使用的是BMapGL命名空间,而不是普通的BMap命名空间,因为BMapGL命名空间支持3D地图功能。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值