Vue3内网使用百度离线地图

在内网开发的小伙伴如果需要使用地图功能肯定都会碰到这个问题。连接不到外网,加载不出来地图资源。这个时候比较好的解决办法就是使用离线地图了。

离线地图需要解决两个地方:

        第一是地图的展示问题

        第二是地图api的调用问题

下面我们直奔主题,来实现一波离线地图

首先我们使用一个vue-baidu-map-3x地图插件,它支持离线地图,可以更方便的集成离线地图。

官方文档地址

npm i vue-baidu-map-offline
npm i vue-baidu-map-3x

安装完插件后,我们先来解决地图api调用的问题。

1. public目录下新建plugin/offline文件夹,把资源放到里面。

2. 然后我们需要在文件夹里放我们的百度api和各种小图标,modules

3. 如果不是直接用作者提供的百度api,则需要改一下api文件内的调用资源路径等等。这里不过多描述,网上有很多教程方法。

ok现在第一个api资源问题就已经解决了,现在我们来解决第二个问题。地图的展示问题

我们都知道,在线地图我们拖动,缩放都是发送新的请求,拿到新的资源来做展示。那么我们现在在内网环境下,拿不到百度的资源,就需要自己来存储瓦片图,供我们来展示。

1. 安装地图下载器 -> 选择你想要展示的地区 -> 下载该地区的瓦片地图。

2. 下载完成之后放入到我们刚才新建的public/plugin/offline/tiles中

3. 这样借助我们的插件 + 刚刚整合进来的资源就可以展示我们的地图啦

注意如果是使用的作者提供的api资源,这里有个我踩过的小坑点。api会调用/plugin/offline/tiles/xxx/xxx.jpg资源。如果下载的瓦片图不是jpg这里是展示不出来地图的。

### 集成百度离线地图Vue3项目 为了在 Vue3 项目中集成和使用百度离线地图,可以通过 `vue-baidu-map-3x` 插件来简化这一过程。此插件支持离线地图功能并能更好地与 Vue3 生态兼容[^1]。 #### 安装依赖库 安装必要的 npm 包以引入百度地图 JavaScript API 和 `vue-baidu-map-3x` 组件: ```bash npm install baidu-maps vue-baidu-map-3x ``` #### 初始化配置 创建或编辑项目的入口文件(通常是 main.js 或者 app.js),注册全局组件以及设置 BMap 的 ak (API Key),即使是在离线环境中也建议保留该字段以便于后续可能的在线模式切换: ```javascript import { createApp } from &#39;vue&#39;; import App from &#39;./App.vue&#39;; // 导入Baidu Map插件 import BaiduMap from "vue-baidu-map-3x"; const app = createApp(App); app.use(BaiduMap, { ak: &#39;YOUR_API_KEY&#39;, // 如果仅用于离线环境可留空字符串"" }); app.mount(&#39;#app&#39;); ``` #### 准备离线资源 对于内网环境下使用离线地图瓦片图片和其他静态资源,可以从特定仓库获取这些预先打包好的资源包[^2][^3]。将下载下来的文件放置于合适的位置,并调整路径使得应用能够正确加载它们。 #### 使用示例代码 下面是一个简单的例子展示了如何在一个页面上显示带有标记的地图视图: ```html <template> <div id="map-container"></div> </template> <script setup lang="ts"> import { ref, onMounted } from &#39;vue&#39;; let mapInstance; onMounted(() => { const containerDiv = document.getElementById(&#39;map-container&#39;); if (!containerDiv) return; mapInstance = new window.BMap.Map(containerDiv); const point = new window.BMap.Point(116.404, 39.915); // 创建坐标点 mapInstance.centerAndZoom(point, 15); // 设置中心位置及缩放级别 }); </script> <style scoped> #map-container { width: 100%; height: 500px; /* 可自定义高度 */ } </style> ``` 通过上述方法可以在 Vue3 应用程序里成功集成了百度离线地图服务。需要注意的是,在实际部署前还需测试不同场景下的表现情况,确保所有功能都能正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值