当前位置: 首页 > news >正文

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

搞了我两天的一个问题。
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 = markerItemthis.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>

相关文章:

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

搞了我两天的一个问题。 hbuilderx版本&#xff1a;4.36 问题介绍&#xff1a; 我的项目是公司的项目&#xff0c;需要在H5端使用百度地图&#xff0c;使用vue-cli创建的uniapp&#xff0c;就是uni代码在src里的目录结构。就是使用这种方式才会遇到这个问题。 问题原因&#xf…...

Leetcode42-环形链表

题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使…...

C语言进阶(2) ---- 指针的进阶

前言&#xff1a;指针的主题&#xff0c;我们在初阶的《指针》章节已经接触过了&#xff0c;我们知道了指针的概念&#xff1a; 1.指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块内存空间。 2.指针的大小是固定的4/8个字节(32位平台/64位平台)。 3.指针是…...

使用Python筛选图片

需求&#xff1a;图片识别&#xff0c;一堆人脸照片中&#xff0c;其中有不是人脸的&#xff0c;把模糊的&#xff0c;侧脸的&#xff0c;重复的去掉 使用说明&#xff1a; 安装好所需要的包&#xff1a; 第一步&#xff1a;输入图片路径 第二步&#xff1a;创建图片输出路径…...

GESP CCF python五级编程等级考试认证真题 2024年12月

1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 下面的程序中&#xff0c;x,y都是正整数&#xff0c;完成的算法是&#xff08; &#xff09; def chenadai(x, y): while y: x, y y, x % y return x A. 最小公倍数 …...

URL的概念与格式

URL概念及组成 1、URL简介2、URL组成 1、URL简介 URL&#xff08;Uniform Resource Locator&#xff09;即统一资源定位符&#xff0c;是一种用于标识和定位互联网上资源的字符序列 URL主要用于在Web中标识和定位Web页面、图像、文件、服务和其他各种类型的资源 URL提供了一种…...

【Elasticsearch】高亮搜索:从原理到Web呈现

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

samout llm解码 幻觉更低更稳定

这段代码定义了一个简单的对话生成系统&#xff0c;包括模型加载、词汇表加载、以及基于给定提示生成文本的功能。下面是对代码的解析&#xff1a; load_model_and_voc(device"cpu"): 该函数用于加载预训练的模型和词汇表&#xff08;vocabulary&#xff09;。它首先…...

单片机:实现多任务处理(附带源码)

单片机实现多任务处理 多任务处理是现代操作系统的重要特性&#xff0c;通常通过多线程、多进程的方式来并行执行多个任务。在嵌入式系统中&#xff0c;由于资源有限&#xff0c;通常通过时间片轮转或中断机制来模拟多任务处理。本项目将展示如何在8051单片机上实现简单的多任…...

负载均衡oj项目:介绍

目录 项目介绍 项目演示 项目介绍 负载均衡oj是一个基于bs模式的项目。 用户使用浏览器向oj模块提交代码&#xff0c;oj模块会在所有在线的后端主机中选择一个负载情况最低的主机&#xff0c;将用户的代码提交给该主机&#xff0c;该主机进行编译运行&#xff0c;将结果返回…...

剑指Offer 03比特位计数

只是记录 题目链接 题目链接 自己想出来的 第一种解法 思路简述 遍历[0,n]之间的数字&#xff0c;对于每一个数字按照二进制的方式展开&#xff0c;判断最低位置是否为1&#xff0c;若为1则1&#xff0c;反之不加&#xff0c;直到该数字等于0就停止。 public static int[] …...

多音轨视频使用FFmpeg删除不要音轨方法

近期给孩子找宫崎骏动画&#xff0c;但是有很多是多音轨视频但是默认的都是日语&#xff0c;电视上看没办法所以只能下载后删除音轨文件只保留中文。 方法分两步&#xff0c;先安装FFmpeg在转文件即可。 第一步FFmpeg安装 FFmpeg是一个开源项目&#xff0c;包含了处理视频的…...

elasticsearch 使用enrich processor填充数据

文章目录 使用 POST 请求手动插入用户数据1. 创建 Enrich Policy步骤 1.1: 创建 Enrich Policy步骤 1.2: 执行 Enrich Policy 2. 创建 Ingest Pipeline步骤 2.1: 创建 Ingest Pipeline步骤 2.2: 配置 Enrich Processor 参数 3. 使用 Ingest Pipeline步骤 3.1: 使用 Pipeline 进…...

VMProtect:软件保护与安全的全面解决方案

在当今数字化时代&#xff0c;软件的安全性和保密性愈发重要。VMProtect 作为一款备受瞩目的软件保护工具&#xff0c;因其强大的功能和广泛的应用而成为开发者保护软件的首选方案。 VMProtect 是一款新一代的软件保护实用程序&#xff0c;支持多个编译器平台&#xff0c;包括…...

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 1.0 项目介绍 开发工具&#xff1a;IDEA、VScode 服务器&#xff1a;Tomcat&#xff0c; JDK 17 项目构建&#xff1a;maven 数据库&#xff1a;mysql 8.0 系统用户前台和管理…...

第十二篇:linux下socket本地套接字通讯

使用套接字除了可以实现网络间不同主机间的通信外&#xff0c;还可以实现同一主机的不同进程间的通信&#xff0c;且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口&#xff0c;只是地址结构与某些参数不同。 用途 进程间通信&#xff1a;本地套…...

Spring Boot 2.1.7 数据源自动加载过程详解

在 Spring Boot 中&#xff0c;数据源的自动配置是框架中一个关键功能&#xff0c;本文将以 Spring Boot 2.1.7 版本为例&#xff0c;详细讲解在单数据源情况下数据源是如何自动加载的。我们通过源码分析&#xff0c;追踪整个加载流程。 1. 自动配置类的发现 Spring Boot 使用…...

【Vue.js 3.0】provide 、inject 函数详解

在 Vue 3 中&#xff0c;provide 和 inject 是用于跨组件层次结构进行依赖注入的一对 API。这些 API 主要用于祖先组件和后代组件之间的数据传递&#xff0c;尤其是当这些组件之间没有直接的父子关系时。 1. 示例 1.1 provide provide 函数用于在祖先组件中定义一个值&#…...

JVM(Java虚拟机)的虚拟机栈

JVM&#xff08;Java虚拟机&#xff09;的虚拟机栈是Java程序运行时的重要组件&#xff0c;以下是对其的详细解析&#xff1a; 一、概念与功能 概念&#xff1a;虚拟机栈也称为Java栈&#xff0c;是JVM为每个线程分配的一个私有的内存区域。每个线程在创建时都会创建一个虚拟…...

Elasticsearch02-安装7.x

零、文章目录 Elasticsearch02-安装7.x 1、Windows安装Elasticsearch &#xff08;1&#xff09;JDK安装 Elasticsearch是基于java开发的&#xff0c;所以需要安装JDK。我们安装的Elasticsearch版本是7.15&#xff0c;对应JDK至少1.8版本以上。也可以不安装jdk&#xff0c;…...

小红书自动评论的‘伪需求’与真风险:聊聊RPA工具养号背后的封号逻辑与合规玩法

小红书自动化评论的合规边界&#xff1a;效率与账号安全的博弈术 凌晨三点&#xff0c;某MCN机构运营负责人李然被连续不断的手机提示音惊醒——团队管理的12个小红书达人账号同时收到平台封禁通知&#xff0c;而这一切都源于他们三天前部署的那套"高效互动系统"。这…...

Miri最佳实践清单:构建安全Rust代码的20条黄金法则

Miri最佳实践清单&#xff1a;构建安全Rust代码的20条黄金法则 【免费下载链接】miri An interpreter for Rusts mid-level intermediate representation 项目地址: https://gitcode.com/GitHub_Trending/mi/miri Miri是Rust的中级中间表示解释器&#xff0c;它能帮助开…...

魔兽世界插件开发5分钟速成:从零掌握API查询与宏命令管理终极指南

魔兽世界插件开发5分钟速成&#xff1a;从零掌握API查询与宏命令管理终极指南 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 魔兽世界API文档平台与宏工具是一个专为《魔兽世界》玩…...

Pixel Epic实战案例:用AgentCPM-Report 3步生成逻辑严密深度研报

Pixel Epic实战案例&#xff1a;用AgentCPM-Report 3步生成逻辑严密深度研报 1. 引言&#xff1a;当研究报告遇上像素冒险 想象一下这样的场景&#xff1a;你需要完成一份关于新能源行业的深度研究报告&#xff0c;传统方式可能需要花费数周时间收集资料、分析数据、撰写内容…...

危废尾气治理厂家怎么选?CO超低排放技术与全场景危废焚烧烟气治理解决方案

随着我国危废处置行业监管体系持续完善&#xff0c;《危险废物焚烧污染控制标准》&#xff08;GB 18484-2020&#xff09;对危废焚烧烟气中一氧化碳&#xff08;CO&#xff09;等污染物设置了明确排放限值&#xff0c;北京、海南等多地更是出台严于国标的地方标准&#xff0c;其…...

开源工具Minder:用思维导图释放创意与效率的全功能解决方案

开源工具Minder&#xff1a;用思维导图释放创意与效率的全功能解决方案 【免费下载链接】Minder Mind-mapping application for Elementary OS 项目地址: https://gitcode.com/gh_mirrors/min/Minder 在信息爆炸的时代&#xff0c;您是否经常感到思绪混乱、创意难以捕捉…...

51单片机开发环境搭建指南:从Keil5安装到程序烧录全流程

1. 51单片机开发环境搭建全攻略 刚接触51单片机的朋友可能会被一堆陌生的名词搞懵——Keil5、CH340、HEX文件、烧录工具...别担心&#xff0c;我当初也是这样过来的。今天我就用最直白的语言&#xff0c;手把手带你搭建完整的开发环境。整个过程就像组装乐高积木&#xff0c;只…...

利用快马平台快速搭建comfyui工作流原型,十分钟验证ai绘画创意

最近在尝试用ComfyUI搭建AI绘画工作流时&#xff0c;发现从零开始调试节点连接特别耗时。后来发现InsCode(快马)平台的AI生成功能能快速搭建原型&#xff0c;把验证周期从几小时缩短到十分钟&#xff0c;分享下具体实践&#xff1a; 为什么需要快速原型验证 传统ComfyUI工作流搭…...

STM32CubeMX项目实战:从新建工程到驱动LED,一步步教你玩转HAL库(附代码解析)

STM32CubeMX实战指南&#xff1a;HAL库驱动LED的底层逻辑与工程化思维 第一次打开STM32CubeMX时&#xff0c;那种面对密密麻麻的配置选项却不知从何下手的焦虑感&#xff0c;相信每位嵌入式开发者都记忆犹新。不同于传统寄存器操作的直白&#xff0c;HAL库和图形化配置工具带来…...

使用AIVideo实现LaTeX学术报告自动转视频教程

使用AIVideo实现LaTeX学术报告自动转视频教程 1. 引言 作为一名科研工作者&#xff0c;你是否曾经为了准备学术会议的视频报告而头疼&#xff1f;传统的视频制作需要录制、剪辑、配音等多个繁琐步骤&#xff0c;耗时耗力。现在&#xff0c;通过AIVideo这个强大的AI视频创作平…...