vue本地geojson文件读取不了,无法加载geojson的原因(附发布geojson图层源码)

开发者分享了在项目中遭遇的404错误,涉及代码检查、路径选择,最终发现将.geojson文件放置在public并使用正确相对路径以index.html为基础得以解决。

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

搞了一整天真的魔怔了,控制台一直报错说找不到文件,最后才找到原因

一开始是以为代码写错了,检查多遍后发现没错,就把url换成了在线链接,也没问题,那就是本地文件出了错。

来来回回看了很多遍,相对路径绝对路径都没问题,就是找不到文件404。

最后把.geojson文件放在public文件夹下面,相对路径记得用‘./XXXX’,因为我们自己编写的代码最终都会集成到public/index.html中,我们的相对路径要以index.html为起点

### 在 Vue 中通过高德地图 API 加载本地 GeoJSON 文件 #### 准备工作 为了在 Vue 项目中集成并展示来自本地GeoJSON 数据,需先完成必要的环境配置。确保已安装 `axios` 库用于发起 HTTP 请求获取本地文件,并引入高德地图 JavaScript API。 ```bash npm install axios ``` #### 创建地图实例 初始化高德地图容器,在页面加载完成后创建地图对象: ```javascript // src/main.js or equivalent entry file import AMapLoader from '@amap/amap-jsapi-loader'; AMapLoader.load({ "key": "Your_Amap_API_Key", // 替换成自己的Key "version": "2.0", "plugins": [] }).then((AMap) => { window.AMap = AMap; }); ``` #### 添加 GeoJSON 图层支持 定义一个方法来处理 GeoJSON 的解析与渲染逻辑。此部分代码应放置于组件内部的方法属性下以便调用: ```javascript methods: { addGeoJsonLayer(geojsonData){ let map = this.map; // 假设 'this.map' 是之前已经初始化的地图实例 const geojson = new AMap.GeoJSON({ geoJSON: geojsonData, getPolygon: function (geojson, lnglats) { return new AMap.Polygon({ path: lnglats, strokeColor: "#FF33FF", strokeWeight: 6, fillOpacity: 0.4, fillColor: '#1791fc', zIndex: 50 }); } }); geojson.setMap(map); // 调整视野至合适范围 var bounds = geojson.getBounds(); if(bounds){ map.setBounds(bounds); }else{ console.log('无法计算边界'); } }, } ``` #### 获取并应用本地 GeoJSON 文件 编写函数读取本地存储的 GeoJSON 文件并通过上述方法将其添加到地图上。这里假设使用的是相对路径访问静态资源目录下的 `.json` 文件。 ```javascript async loadLocalGeoJson(){ try { const response = await import('@/assets/data/sample.geojson'); // 根据实际位置调整路径 this.addGeoJsonLayer(response.default || response); } catch(error){ console.error("Failed to fetch local GeoJSON:", error); } }, ``` 最后,在适当的地方触发该函数,比如 mounted 生命周期钩子内: ```javascript mounted() { this.$nextTick(() => { this.loadLocalGeoJson(); }) } ``` 以上操作实现了在一个基于 Vue 构建的应用程序里借助高德地图服务呈现自定义地理空间数据的功能[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值