uniapp使用百度地图配置了key,但是显示Map key not configured

news2024/12/18 12:25:26

搞了我两天的一个问题。
hbuilderx版本:4.36
问题介绍:
我的项目是公司的项目,需要在H5端使用百度地图,使用vue-cli创建的uniapp,就是uni代码在src里的目录结构。就是使用这种方式才会遇到这个问题。
问题原因:
cli创建的项目编译时不是使用hbuilderx编译,而是使用自己的node_modules内的uni依赖包编译(如果你直接在hbuilderx新建项目你会发现没有node_modules,因为用的是hbuilderx的环境编译),所以导致版本跟不上。map组件找不到manifest.json配置的百度地图key。其他的key可以。
这里有个。腾讯地图的mapkey名不同版本名字不一样,最新版本是tencent,老的是qqmap。当我用hbuilderx配置勾选腾讯地图后在manifest.json内看到的key名是tencent,但我的项目是cli创建的老版本编译,只能识别qqmap,所以也会导致:Map key not configured csdn。
解决办法:
在public文件夹下的index.html加入

<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&&type=webgl&ak=你的key"></script>

然后在页面使用

<template>
    <view class="car-position-map">
        <div id='baiduMapContainer' class="map"></div>
    </view>
</template>

// js
var map = new BMapGL.Map("baiduMapContainer"); // 创建地图实例
var point = new BMapGL.Point(this.longitude, this.latitude); // 创建点坐标
map.centerAndZoom(point, 16); // 初始化地图,设置中心点坐标和地图级别
var marker = new BMapGL.Marker(point);
map.addOverlay(marker);
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

最方便的还是使用Uniapp内置的map组件,不过我试了下,在我的项目弄不了,应该是编译版本不支持,又不好改。
如果不是cli项目,可以配置百度地图key.需要在manifest.json源码自己添加,hbuilderx 定位和地图可视化配置不能勾百度地图,以后可能会更新。

"h5" : {
        "sdkConfigs" : {
            "maps" : {
							"bmap" : {
							    // 百度地图秘钥(HBuilderX 3.99+)http://lbsyun.baidu.com/apiconsole/key#/home
							    "key" : ""
							}
            }
        }
    }

运行效果
在这里插入图片描述
自己写的一个模仿uniapp内置map的组件

<template>
    <!-- 模拟uniapp map组件 -->
    <div id='baiduMapContainer' class="map"></div>
</template>

<script>
    export default {
        name: 'baiduMap',
        props: {
            id: {
                type: String,
                default: ''
            },
            latitude: {
                type: [String, Number],
                default: 39.92
            },
            longitude: {
                type: [String, Number],
                default: 116.46
            },
            scale: {
                type: [String, Number],
                default: 16
            },
            markers: {
                type: Array,
                default () {
                    return []
                }
            },
            covers: {
                type: Array,
                default () {
                    return []
                }
            },
            // includePoints: {
            //   type: Array,
            //   default () {
            //     return []
            //   }
            // },
            polyline: {
                type: Array,
                default () {
                    return []
                }
            },
            circles: {
                type: Array,
                default () {
                    return []
                }
            },
            controls: {
                type: Array,
                default () {
                    return []
                }
            },
            showLocation: {
                type: [Boolean, String],
                default: false
            },
            libraries: {
                type: Array,
                default () {
                    return []
                }
            },
            polygons: {
                type: Array,
                default: () => []
            }
        },
        data() {
            return {
                circle: null, // 圆实例
                // mapScale: 16,
                map: null,
                markerHandleObj: [], // 根据传入的markers id存入操作对象和信息,便于操作点标签
                tempIcon: "https://img0.baidu.com/it/u=1848373536,836779508&fm=253&app=120&size=w931&n=0&f=JPEG&fmt=auto?sec=1734109200&t=f268c95df20d59d0cf92c89e1a29dfce",
            };
        },
        watch: {
            markers: {
                deep: true,
                async handler(val) {
                    if (val && val.length) {
                        console.log("更新地图点标记:", this.markers)
                        this.markers.forEach((markerItem, index) => {
                            this.addMarker(markerItem)

                        })
                    }
                },

            },
            circles: {
                deep: true,
                immediate: true,
                async handler(val) {
                    if (val && val.length !== 0) {
                        console.log("更新圆:", this.circles)
                        if (!this.map) setTimeout(() => {
                            this.circles.forEach((item, index) => {
                                this.addCircle({
                                    longitude: this.longitude,
                                    latitude: this.latitude,
                                    option: item
                                })
                            })
                        }, 50)
                        else {
                            this.circles.forEach((item, index) => {
                                this.addCircle({
                                    longitude: this.longitude,
                                    latitude: this.latitude,
                                    option: item
                                })
                            })
                        }

                    }
                },

            }
        },
        mounted() {
            this.initMap();
        },
        methods: {
            // 添加单个标记
            addMarker(markerItem) {
                let handleObj = null;
                handleObj = this.markerHandleObj.find(item => {
                    return item.markerInfo.id === markerItem.id
                })
                if (!handleObj) {
                    this.markerHandleObj.push({
                        markerInfo: null,
                        marker: null
                    })
                    handleObj = this.markerHandleObj[this.markerHandleObj.length - 1]
                }
                if (handleObj) {
                    // 信息没变则不更新标记
                    if (JSON.stringify(markerItem) !== handleObj.markerInfo) {
                        handleObj.markerInfo = JSON.parse(JSON.stringify(markerItem));
                        var point = new BMapGL.Point(markerItem.longitude, markerItem.latitude); // 创建点坐标
                        // 初始化标记实例
                        if (!handleObj.marker) {
                            // console.log('添加点标记')
                            // 创建点标记图标
                            var markerIcon = new BMapGL.Icon(markerItem.iconPath, new BMapGL.Size(markerItem.width,
                                markerItem.height));
                            // var markerIcon = new BMapGL.Icon('/static/images/img_map_carLabel@3x.png', new BMapGL.Size(markerItem.width, markerItem.height));
                            // var markerIcon = new BMapGL.Icon(this.tempIcon, new BMapGL.Size(markerItem.width, markerItem.height));
                            let marker = null;
                            if (markerItem.customCallout && markerItem.address) {
                                // 创建标签
                                marker = new BMapGL.Label(
                                    `<img src='${markerItem.iconPath}' style='vertical-align:middle; width: 16px; height: 16px;'/> ` +
                                    markerItem.address, {
                                        point,
                                        // offset:{}
                                    });
                                // 设置label的样式
                                marker.setStyle(markerItem.styles);
                                marker.id = markerItem.id
                                // 为label添加点击事件监听器
                                marker.addEventListener("click", (e) => {
                                    this.$emit('callouttap', e)
                                    // 在这里执行你所需的操作
                                });

                            } else {
                                marker = new BMapGL.Marker(point, {
                                    icon: markerIcon
                                });
                            }
                            handleObj.marker = marker;
                            handleObj.markerInfo = markerItem
                            this.map.addOverlay(handleObj.marker);
                        } else {
                            // 更新点标记的坐标
                            handleObj.marker.setPosition(point);
                        }
                        // 更新车的旋转角度
                        if (markerItem.rotate) {
                            handleObj.marker.setRotation(markerItem.rotate);
                        }
                    }
                }
            },
            // 添加一组标记
            addMarkers(info) {
                info.markers.forEach(item => {
                    this.addMarker(item)
                })
                // console.log('addMarkers', info)
            },
            initMap() {
                var map = new BMapGL.Map("baiduMapContainer"); // 创建地图实例
                var point = new BMapGL.Point(this.longitude, this.latitude); // 创建点坐标
                map.centerAndZoom(point, this.scale); // 初始化地图,设置中心点坐标和地图级别
                map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

                map.addEventListener('click', (e) => {
                    // console.log('click:', e)
                    this.$emit('onMapClick', e, map)
                });
                this.map = map;
                console.log('初始化地图')
            },
            // 画圆
            async addCircle(info) {
                if (info) {
                    // 删除旧的实例,暂时只支持画一个圆
                    if (this.map.getOverlays().length > 0) {
                        this.map.removeOverlay(this.circle); // 先移除旧的圆形
                    }
                    var point = new BMapGL.Point(info.longitude, info.latitude); // 创建点坐标
                    this.circle = new BMapGL.Circle(point, info.option.radius, info.option);
                    // this.circle.setCenter(new LatLng(39.916935, 116.372119));
                    this.map?.addOverlay(this.circle);
                }
            },
            moveToLocation(location) {
                var point = new BMapGL.Point(location.longitude, location.latitude);
                //切换地图位置
                this.map.centerAndZoom(point, this.scale);
                if (location.success) location.success()
            },
            //info => {points: markers,padding: [60, 60, 60, 60],}
            // 将试图拉伸到显示一组点
            includePoints(info) {
                if (info.points.length > 1) {
                    const points = []
                    info.points.forEach(item => {
                        points.push(new BMapGL.Point(item.longitude, item.latitude))
                    })
                    // 根据点坐标数组计算视图范围
                    var viewport = this.map.getViewport(points);
                    // 调整地图的中心点和缩放级别
                    this.map.centerAndZoom(viewport.center, viewport.zoom);
                }
            }
        }
    }
</script>

<style>
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2261590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ensp 静态路由配置

A公司有广州总部、重庆分部和深圳分部3个办公地点&#xff0c;各分部与总部之间使用路由器互联。广州、重庆、深圳的路由器分别为R1、R2、R3&#xff0c;为路由器配置静态路由&#xff0c;使所有计算机能够互相访问&#xff0c;实训拓扑图如图所示 绘制拓扑图 给pc机配置ip地址…

3分钟读懂数据分析的流程是什么

数据分析是基于商业目的&#xff0c;有目的地进行收集、整理、加工和分析数据&#xff0c;提炼出有价值的 信息的一个过程。整个过程大致可分为五个阶段&#xff0c;具体如下图所示。 1.明确目的和思路 在开展数据分析之前&#xff0c;我们必须要搞清楚几个问题&#xff0c;比…

Python-基于Pygame的小游戏(坦克大战-1.0(世界))(一)

前言:创作背景-《坦克大战》是一款经典的平面射击游戏&#xff0c;最初由日本游戏公司南梦宫于1985年在任天堂FC平台上推出。游戏的主题围绕坦克战斗&#xff0c;玩家的任务是保卫自己的基地&#xff0c;同时摧毁所有敌人的坦克。游戏中有多种地形和敌人类型&#xff0c;玩家可…

认识漏洞-GIT泄露漏洞、APP敏感信息本地存储漏洞

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 [GIT泄露漏洞&#xff0c;你检查了吗&#xff1f;](https://mp.weixin.qq.com/s/I69Jsu8GfX9FJIhMVFe_fA)02 [APP客户端评估- 敏感信息本地存储]( https://mp.weixin.qq.com/s/IrTLZp_lslvGaD4Xhlk…

《Kali 系统中 Docker 镜像加速器安装指南:加速容器镜像拉取》

在 Kali 中配置 Docker 镜像加速器可以显著提高拉取 Docker 镜像的速度&#xff0c;以下是具体步骤&#xff1a; 一、获取镜像加速器地址 国内有许多云服务提供商提供镜像加速器服务&#xff0c;例如阿里云、腾讯云、网易云等。以阿里云为例&#xff0c;你需要先在阿里云容器镜…

allure报告环境搭建

1、allure下载新版.zip文件&#xff0c;解压 https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 2、解压后放到d盘文件里&#xff1a;、 3、环境变量配置bin文件和jre文件 4、虚拟环境里安装allure-pytest&#xff0c;cmd执行activate.bat,进入对应…

MVC基础——市场管理系统(四)

文章目录 项目地址六、EF CORE6.1 配置ef core环境6.2 code first6.2.1 创建Database context1. 添加navigation property2. 添加MarketContext上下文七、Authentication7.1 添加Identity7.2 Run DB migration for Identity7.3 使用Identity7.3.1 设置认证中间件7.3.2 设置权限…

33. Three.js案例-创建带阴影的球体与平面

33. Three.js案例-创建带阴影的球体与平面 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它负责将场景中的对象绘制到画布上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersObject可选参数…

Scala—“==“和“equals“用法(附与Java对比)

Scala 字符串比较—""和"equals"用法 Scala 的 在 Scala 中&#xff0c; 是一个方法调用&#xff0c;实际上等价于调用 equals 方法。不仅适用于字符串&#xff0c;还可以用于任何类型&#xff0c;并且自动处理 null。 Demo&#xff1a; Java 的 在 J…

Qt WORD/PDF(一)使用 QtPdfium库实现 PDF 预览

文章目录 一、简介二、下载 QtPdfium三、加载 QtPdfium 动态库四、Demo 使用 关于QT Widget 其它文章请点击这里: QT Widget 姊妹篇: Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF&#xff08;二&#xff09;使用 QtPdfium库实现…

优选算法——链表

1. 链表常用技巧和操作总结 2. 两数相加 题目链接&#xff1a;2. 两数相加 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分析&#xff1a;本题给的是逆序&#xff0c;其实降低了难度&#xff0c;逆序刚好我们从第一位开始加&#xff0c;算法原理其实就…

[蓝桥杯 2019 国 B] 排列数

目录 前言 题解 思路 疑问 解答 前言 对于本篇文章是站在别人的基础之上来写的&#xff0c;对于这道题作为2019年国赛B组的最难的一题&#xff0c;他的难度肯定是不小的&#xff0c;这道题我再一开始接触的时候连思路都没有&#xff0c;也是看了两三遍别人发的题解&#x…

Spring Boot 3.x:自动配置类加载机制的变化

随着 Spring Boot 3.x 版本的发布&#xff0c;Spring Boot 引入了一些关键的变更。其中最重要的一项变更是 自动配置类的加载机制。在之前的版本中&#xff0c;Spring Boot 使用 spring.factories 文件来管理自动配置类的加载。然而&#xff0c;在 Spring Boot 3.x 中&#xff…

arXiv-2024 | NavAgent:基于多尺度城市街道视图融合的无人机视觉语言导航

作者&#xff1a;Youzhi Liu, Fanglong Yao*, Yuanchang Yue, Guangluan Xu, Xian Sun, Kun Fu 单位&#xff1a;中国科学院大学电子电气与通信工程学院&#xff0c;中国科学院空天信息创新研究院网络信息系统技术重点实验室 原文链接&#xff1a;NavAgent: Multi-scale Urba…

(三)PyQT5+QGIS+python使用经验——解决各版本不兼容问题

一、问题描述 基础环境&#xff1a;Windows10&#xff08;64&#xff09; PyCharm2024 QGIS 3.22。 目的&#xff1a;解决之前python版本多&#xff0c;pyqt5以及QT Designer交互使用存在环境变量冲突矛盾&#xff0c;以及QGIS安装时自带python、pyqt5等问题。 尤其是在QT …

【OpenCV计算机视觉】图像处理——平滑

本篇文章记录我学习【OpenCV】图像处理中关于“平滑”的知识点&#xff0c;希望我的分享对你有所帮助。 目录 一、什么是平滑处理 1、平滑的目的是什么&#xff1f; 2、常见的图像噪声 &#xff08;1&#xff09;椒盐噪声 ​编辑&#xff08;2&#xff09; 高斯噪声 &a…

秒优科技-供应链管理系统 login/doAction SQL注入漏洞复现

0x01 产品简介 秒优科技提供的供应链管理系统,即秒优SCM服装供应链管理系统,是一款专为服装电商企业设计的全方位解决方案。是集款式研发、订单管理、物料管理、生产管理、工艺管理、收发货管理、账单管理、报表管理于一体的服装电商供应链管理解决方案。它涵盖了从企划到开…

快速掌握源码部署Filebeat

文章目录 1. 裸金属安装1.1 压缩包方式安装1.2 yum方式安装 2. docker安装3. K8s安装 项目使用了Filebeat&#xff0c;现在需要运行在ARM架构的服务器上&#xff0c;但是Filebeat官方没有提供&#xff0c;需要自己编译一份 filebeat等组件的源码地址 https://github.com/elasti…

ST-Linker V2 烧录器详解说明文档

目录 ST-Linker v2烧录器介绍 STM8烧录口 STM32烧录接口 JTAG烧录接口 ​​​​​​​ ​​​​​​​ ​​​​​​​ 编写不易&#xff0c;仅供学习&#xff0c;请勿搬运&#xff0c;感谢理解 ST-Linker v2烧录器介绍 图片中是两种IC芯片的烧录器&#x…

同三维TL201H2S4 4+2机手术互动录播主机产品

同三维TL201H2S4 42机手术互动录播主机产品 录制点播、直播导播、互动、音频处理器、中控等多功能为一体 6路视频输入:4路SDI1路HDMI1(4K30)1路(3选1:HDMI2/2路VGA) 2路视频输出&#xff1a;1路HDMI1(4K30)1路&#xff08;2选1&#xff1a;VGA和HDMI2) 5路音频输入&#xf…