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

openlayers+vite+vue3加载离线地图并实现初始化(一)

前景提示:本文主要讲解使用vite工具构建的项目,利用openlayers实现离线地图的主要一些功能,包括初始化地图、打点、画线、弹窗等等,这些后续有时间会持续为大家更新,本文主要阐述如何实现其首要功能离线地图的初始化。

目录

一、环境搭建

1.使用vite创建一个vue项目

2.安装ol

二、开始编码、初始化地图

1.创建地图容器

2.引入ol

3.创建渲染地图的方法

3.初始化地图

4.在 onMounted 后渲染地图

三、全部代码

四、效果展示


一、环境搭建

1.使用vite创建一个vue项目

npm init vite@latest

输入以上命令后会有相应的提示,首先是输入项目名,后面是选择要使用的框架,这里选择 vue 即可。

Select a framework:vanillavuereactpreactlit-elementsvelte

然后进入项目,使用命令初始化项目

cd 你的项目名(我创建的是map-openlayers)
npm install

2.安装ol

待上述步骤实现完成后,需要安装ol

npm i ol 

然后启动项目

npm run dev

二、开始编码、初始化地图

1.创建地图容器

在项目中新建一个vue文件,然后创建地图容器,这一步关键的一点是地图容器需要一个id,另外一定要在css中设置地图的宽高,如果不设置将会出现地图不显示的现象。

<template><div id="container" class="map"></div>
</template>
<style lang="less" scoped>
#container {width: 100%;height: 100%;position: absolute;
}
</style>

2.引入ol

在<script>中引入以下方法,这个根据需要引入即可

import { onMounted, reactive, ref } from 'vue'
import 'ol/ol.css' // 地图样式
import TileLayer from 'ol/layer/Tile' // 瓦片渲染方法
import XYZ from 'ol/source/XYZ'
import { Map, View } from 'ol' // 地图实例方法、视图方法
import { fromLonLat } from 'ol/proj'

3.创建渲染地图的方法

let map = ref(null)//地图图层参数
const mapView = reactive({center: fromLonLat([120.299, 31.568]), // 地图中心点,这里我选用以无锡为例zoom: 10, // 初始缩放级别minZoom: 10, // 最小缩放级别maxZoom: 15 // 最大缩放级别
})
const mapUrl = ref('')//这里填写离线地图的瓦片地址,我这里就暂不展示了

3.初始化地图

// 初始化地图
const init = () => {// 使用瓦片渲染方法const tileLayer = new TileLayer({source: new XYZ({url: mapUrl.value})})map.value = new Map({layers: [tileLayer],view: new View(mapView),target: 'container'})
}

4.在 onMounted 后渲染地图

onMounted(() => {init()
})

三、全部代码

因为分阶段书写想让开始学习这个的小伙伴也能一步步了解,下面附上全部代码

<template><div id="container" class="map"></div>
</template>
<script setup>
import { onMounted, reactive, ref } from 'vue'
import 'ol/ol.css' // 地图样式
import TileLayer from 'ol/layer/Tile' // 瓦片渲染方法
import XYZ from 'ol/source/XYZ'
import { Map, View } from 'ol' // 地图实例方法、视图方法
import { fromLonLat } from 'ol/proj'
let map = ref(null)//地图图层参数
const mapView = reactive({center: fromLonLat([120.299, 31.568]), // 地图中心点zoom: 10, // 初始缩放级别minZoom: 10, // 最小缩放级别maxZoom: 15 // 最大缩放级别
})
const mapUrl = ref('')//这里是离线地图的瓦片地址
// 初始化地图
const init = () => {// 使用瓦片渲染方法const tileLayer = new TileLayer({source: new XYZ({url: mapUrl.value})})map.value = new Map({layers: [tileLayer],view: new View(mapView),target: 'container'})addGeoJson()
}onMounted(() => {init()
})
</script>
<style lang="less" scoped>
#container {width: 100%;height: 100%;position: absolute;
}
</style>

四、效果展示


http://www.mrgr.cn/news/4235.html

相关文章:

  • 免费开源!AI视频自动剪辑已成现实!效率提升80%,打工人福音!(附详细教程)
  • YOLOv8改进 | 融合改进 | C2f 融合Efficient Multi-Scale Conv提升检测效果【改进结构图+完整代码】
  • 通过域名和HTTPS上线MSF
  • 基于距离度量学习的异常检测:一种通过相关距离度量的异常检测方法
  • 漫画小程序源码全开源商业版
  • Java 入门指南:注解(Annotation)
  • IntelliJ IDEA 集成 ShardingSphere-JDBC 访问分库分表
  • Ubuntu安装Mysql最新版本
  • 49. 字母异位词分组
  • stm32—IIC
  • 宠物掉毛、有异味怎么办?怎么选择宠物空气净化器?
  • 自然语言处理系列三十五》 语义相似度》基于深度学习的语义相似度算法原理
  • 【Temporal】Server启动逻辑
  • 数据库MySQL多表设计、查询
  • 【Redis】如何从单机架构演化为分布式系统
  • 【Java日志系列】Logback日志框架
  • ⌈ 传知代码 ⌋ DETR[端到端目标检测]
  • Metasploit漏洞利用系列(八):MSF渗透测试 - PHPCGI漏洞利用实战
  • 基于PHP+MySQL组合开发的DIY分销商城小程序源码系统 附带源代码包以及搭建部署教程
  • hyperf 协程作用和相关的方法