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

宜宾建设网站聊城大型门户网站建设

宜宾建设网站,聊城大型门户网站建设,明星做代言的购物网站0,程序员必知的网站在 Vue3 中使用 OpenLayers 根据 Resolution 的不同显示不同的地图 前言 在 Web GIS(地理信息系统)应用开发中,地图的 Resolution(分辨率)是一个重要的概念。不同的 Resolution 适用于不同的地图层级,有时…

在 Vue3 中使用 OpenLayers 根据 Resolution 的不同显示不同的地图

前言

在 Web GIS(地理信息系统)应用开发中,地图的 Resolution(分辨率)是一个重要的概念。不同的 Resolution 适用于不同的地图层级,有时我们希望在不同的 Resolution 范围内切换不同的地图源,以优化用户体验。例如,在小尺度时使用 OpenStreetMap(OSM),在大尺度时使用高德地图(Amap)。

本文将介绍如何在 Vue 3 组合式 API(Composition API)中,使用 OpenLayers 实现一个根据 Resolution 自动切换地图源的示例。


1. 初始化 Vue 3 项目

首先,我们需要创建一个 Vue 3 项目。如果你还没有 Vue 3 的开发环境,可以使用 Vite 快速搭建:

npm create vite@latest vue3-openlayers --template vue
cd vue3-openlayers
npm install

然后,安装 OpenLayers:

npm install ol

2. 编写 Vue 组件

src/components/OpenLayersMap.vue 文件中,我们创建一个 Vue 组件,该组件会根据当前 Resolution 选择不同的地图源。

完整代码

<template><div class="container"><div class="w-full flex justify-center"><div class="font-bold text-[24px]">在 Vue3 中使用 OpenLayers 根据 Resolution 的不同,显示不同的地图</div></div><h4>Resolution 分界点:3000, 当前 Resolution 值:{{ cResolution }}</h4><div id="vue-openlayers"></div></div>
</template><script setup>
import { ref, onMounted } from 'vue';
import 'ol/ol.css';
import { Map, View } from 'ol';
import Tile from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
import XYZ from 'ol/source/XYZ';const map = ref(null);
const cResolution = ref(6);const initMap = () => {const osmLayer = new Tile({source: new OSM(),minResolution: 30,maxResolution: 3000,});const amapLayer = new Tile({source: new XYZ({url: "http://wprd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=6",}),minResolution: 3000,maxResolution: 30000,});map.value = new Map({target: "vue-openlayers",layers: [osmLayer, amapLayer],view: new View({center: [663600, 4723680],zoom: 6,projection: 'EPSG:3857',}),});// 监听地图移动结束事件map.value.on('moveend', () => {const resolution = map.value?.getView()?.getResolution();if (resolution) {cResolution.value = Math.round(resolution);}});
};onMounted(initMap);
</script><style scoped>
.container {width: 840px;height: 590px;margin: 50px auto;border: 1px solid #42B983;
}#vue-openlayers {width: 800px;height: 420px;margin: 0 auto;border: 1px solid #42B983;position: relative;
}
</style>

3. 代码解析

1. 初始化地图

initMap 方法中,我们创建了一个 Map 实例,并绑定到 #vue-openlayers 容器中。

2. 添加不同的地图源

我们使用 Tile 图层分别添加了 OSM 地图(30 ≤ Resolution ≤ 3000)和高德地图(3000 ≤ Resolution ≤ 30000)。

3. 监听 Resolution 变化

通过 map.on('moveend', callback) 监听 moveend 事件,每当地图缩放或移动结束时,更新 cResolution 值。


4. 运行效果

OpenLayersMap.vue 组件导入 App.vue,并运行 npm run dev,然后在浏览器中访问 http://localhost:5173/

实际效果

  • 缩小地图时,显示 OSM 地图。
  • 放大地图时,自动切换到高德地图。
  • 界面上实时显示当前 Resolution。

5. 结论

本文介绍了如何在 Vue 3 组合式 API 中使用 OpenLayers 监听地图 Resolution,并根据不同的 Resolution 切换地图源。这种方法适用于 Web GIS 开发中的多级地图展示需求。

你可以根据需求进一步优化,例如:

  • 添加更多地图源(如 Google Maps、Bing Maps)。
  • 使用 watch 监听 cResolution,在特定阈值时执行自定义操作。

希望本文对你有所帮助,欢迎交流和指正!🎯


6. 参考资料

  • OpenLayers 官方文档
  • Vue 3 官方文档
  • 高德地图 API

如果你觉得这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注👀!


文章转载自:

http://z26DMlPJ.nyfyq.cn
http://AHmG9lOw.nyfyq.cn
http://Gcc5FH5a.nyfyq.cn
http://soRoQ0XO.nyfyq.cn
http://sq30AlU3.nyfyq.cn
http://IPmVagSP.nyfyq.cn
http://jWnUwAwH.nyfyq.cn
http://Z8FTTyiM.nyfyq.cn
http://VDq2ObZH.nyfyq.cn
http://Oef8mguu.nyfyq.cn
http://Z7spaHh8.nyfyq.cn
http://Hxiy391z.nyfyq.cn
http://rHnGf1hG.nyfyq.cn
http://TwAcb8Aa.nyfyq.cn
http://FWGq1BoQ.nyfyq.cn
http://7uesQaCs.nyfyq.cn
http://EGjT0RbR.nyfyq.cn
http://uAhSQuBo.nyfyq.cn
http://XpRenzfq.nyfyq.cn
http://WH1dfu5U.nyfyq.cn
http://79mbXVP5.nyfyq.cn
http://wIR2KSrn.nyfyq.cn
http://5fjOZJEA.nyfyq.cn
http://eqqjeY5p.nyfyq.cn
http://3dIo5M3m.nyfyq.cn
http://v0OIWYBh.nyfyq.cn
http://1fuSshnR.nyfyq.cn
http://H0oFS6Fe.nyfyq.cn
http://MqXxTjJO.nyfyq.cn
http://isSkA9B4.nyfyq.cn
http://www.dtcms.com/wzjs/696957.html

相关文章:

  • 设计购物网站广州冼村很有钱吗
  • 电子商务网站建设选择女教师网课入侵录屏冫
  • 网站用的服务器怎么手动更新wordpress
  • 网站设计的研究方案管理系统软件
  • 建设地方性综合门户网站大致多少钱?要多大的流量?网址大全2345 下载这?
  • 垂直网站建设的关键因素网页设计与制作教程第二版教材
  • wordpress如何设置导航需要优化的网站有哪些?
  • 做网站必须认证吗无锡 网站建设
  • 爱站网官网查询域名专业网站制作哪家专业
  • 龙潭古镇网站建设上海公司网站设
  • 八度 网站建设Wordpress 自用主题 免费 分享
  • 网站面包屑导航网络营销策划的方法
  • 宜昌 医院 网站建设拖拽式建站平台
  • 企业定制app湘潭关键词优化公司
  • 如何给网站添加cnzz贪玩游戏原始传奇官网
  • 中国空间站24小时直播入口网站做广告如何做帐
  • 申请免费网站域名成全视频免费观看在线看第7季动漫
  • 仿做网站网站crm管理软件
  • 济南市历城区精神文明建设网长沙seo排名扣费
  • 泰州网站制作价格经典设计产品
  • 专门做地图的网站网站的备案要求吗
  • 手机网站开发开发wordpress 公告插件
  • 美乐乐网站源码微信小程序网页版
  • 价格划算的东莞建网站公司泰州模板开发建站
  • 江岸区网站公司房产网站开发报价
  • 现代化专业群建设专题网站wordpress建站发文教程
  • 做设计的什么网站能挣钱专业定制小程序
  • 营销网站设计方案wordpress悬浮微信电话
  • 做断桥铝窗户的网站重庆网站建设及推广公司
  • 苍梧县网站建设搜索引擎推广的简称是