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

news2024/11/28 8:49:10

前景提示:本文主要讲解使用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:
    vanilla
    vue
    react
    preact
    lit-element
    svelte

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

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.coloradmin.cn/o/2062562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux系统删除文件后,可用率没变,磁盘还是满的

linux系统磁盘清理排查 前言排查解决 前言 某天更新服务时&#xff0c;发现服务怎么也上传不了&#xff0c;原因是磁盘空间不足&#xff0c;这很简单&#xff0c;直接找到大文件删除rm -rf 即可&#xff0c;但是我删除之后&#xff0c;df -h 发现磁盘空间一点变化都没有&#…

Unity XR Interaction Toolkit 通过两个手柄控制物体放大缩小

1&#xff1a;给物体添加 XR General Grab Transformer 脚本 2&#xff1a;XR Grab Interactable 的 select mode 选择 Multiple

基于Burp爆破验证码

目录 基于Burp爆破验证码 一、验证码识别 二、爆破 1、访问登录请求并发送至intruder模块 2、访问验证码url并将截取的请求发送至captcha-killer模块 3、intruder模块设置 3、爆破结果 4、使用burp完成上述操作&#xff0c;存在以下问题&#xff1a; 基于Burp爆破验证码…

Transformer系列-6丨LRNet和Stand-Alone Self-Attention网络解析

0. 前言 本次主要分享之前看的两篇将自注意力机制self-attention应用在视觉感知任务的文章&#xff0c;分别为LRNet和Stand-alone self-attention。为了深化读者的理解&#xff0c;本文提供了较为详细的中文注释的代码。 首先了解一下这两篇文章的背景&#xff0c;其都是在Vi…

【CSP:202309-1】坐标变换(其一)(Java)

题目链接 202309-1 坐标变换&#xff08;其一&#xff09; 题目描述 求解思路 直接暴力模拟即可。 实现代码 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int n, m;n in.nextInt();m in.…

Python 实现自定义异常

在Python编程中&#xff0c;异常处理是保证程序健壮性的重要机制。Python提供了一些内置的异常类&#xff0c;如ValueError、TypeError、IndexError等&#xff0c;开发者可以直接使用这些类来捕获和处理程序运行中出现的各种错误。然而&#xff0c;某些场景下&#xff0c;内置的…

破晓之战:物流“三剑客”扬帆东南亚

【潮汐商业评论/原创】 70公里的曼谷至春武里省之旅&#xff0c;在日常或许只是一趟轻松的自驾。但对于“美美”服装的员工来说&#xff0c;这却成了一场午夜时分的紧急挑战。 忙碌了一整天的她&#xff0c;直到凌晨才猛然想起&#xff0c;VIP客户的货物必须在清晨前送达春武…

Android.bp和Android.mk文件有的区别

文章目录 1. 构建系统2. 语法和格式3. 可维护性和扩展性4. 编译效率5. 未来趋势 在Android的构建系统中&#xff0c; Android.mk和 android.bp是用于定义如何编译项目文件的两种文件类型&#xff0c;它们有一些显著的区别。 1. 构建系统 Android.mk&#xff1a;使用于基于GN…

软考高级考完了,怎么评职称?

首先祝贺您成功获得了软考高级证书&#xff0c;拥有了高级证书意味着具备了申请高级职称的资格&#xff01;这样就不会因为缺乏资格而错失申请空缺岗位评职称的机会。接下来&#xff0c;我将帮助您处理申请高级职称的事宜&#xff01;如果对您有帮助&#xff0c;请不要忘记点赞…

本地生活服务商系统如何利用本地推获得更多曝光?

随着本地生活赛道中的竞争愈演愈烈&#xff0c;越来越多的本地生活服务商和本地生活商家开始计划着通过在本地推等平台投放相关信息&#xff0c;以提高品牌店铺的曝光量和知名度。不过&#xff0c;就目前的情况来看&#xff0c;绝大多数人都陷入了一种“投入多&#xff0c;转化…

创客匠人标杆对话(上):她如何通过“特长+赛道”实现财富升级

老蒋创客圈第64期对话标杆直播连麦&#xff0c;本期我们邀请到【iAMU蒙特梭利翻转星球】平台创始人申晓慧老师。 为我们揭秘“如何挖掘人生首个百万&#xff0c;实现财富升级&#xff1f;”&#xff0c;深度分享如何提炼用户痛点&#xff0c;高效引流新用户&#xff1f;如何通…

构建基于LLM的应用程序——为您的应用程序选择合适的LLM

。 在本章中&#xff0c;将引导您完成为应用程序选择合适LLM的过程。我们将涵盖以下几个主题&#xff1a; 市场上最具前景的LLM概览比较LLM时应使用的主要标准和工具规模与性能之间的权衡 在本章结束时&#xff0c;您应该能够清楚地理解如何为您的应用程序选择合适的LLM&…

18款各具特色的项目管理系统软件,项目经理用过都说好!

项目管理是指在项目活动中运用专门的知识、技能、工具和方法&#xff0c;使项目能够在有限资源限定条件下&#xff0c;实现或超过设定的需求和期望的过程。 简单来说&#xff0c;项目管理系统就像是交响音乐会指挥手中的乐谱&#xff0c;能为项目经理清晰地呈现出项目的各个音符…

第十二章 迁移学习-实战宝可梦精灵

文章目录 一、Pokemon数据集1.1 数据集收集1.2 数据集划分1.3 数据集加载1.4 数据预处理1.5 pytorch自定义数据库实现 二、ResNet网络搭建三、训练与测试四、迁移学习4.1 pytorch实现迁移学习 一、Pokemon数据集 1.1 数据集收集 # git下载 git lfs install git clone https://…

【大数据】什么是数据中台?

随着企业规模不断扩大、业务多元化——中台服务架构的应运而生。“中台”早期是由美军的作战体系演化而来的&#xff0c;技术上说的“中台”主要是指学习这种高效、灵活和强大的指挥作战体系。阿里在今年发布“双中台ET”数字化转型方法论&#xff0c;“双中台”指的是数字中台…

学生和青年研究人员该如何撰写高质量论文?教授支招:3个关键点解锁一篇成功发表的稿件

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 本文通讯作者为中国科学院大学唐智勇教授&#xff0c;博士生导师&#xff0c;科技部纳米重大研究计划首席科学家。 对于学生和青年研究人员该如何撰写高质量稿件并成功发表…

揭秘Semantic Kernel:用AI自动规划和执行用户请求

在我们日益高效的开发世界中&#xff0c;将任务自动化并智能规划变得越来越必要。今天&#xff0c;我要给大家介绍一个强大的概念——Semantic Kernel中的planner功能。通过这篇文章&#xff0c;我们会学习到planner的工作原理以及如何实现智能任务规划。 什么是planner&#x…

vue3项目中无法实现cpolar内网穿透解决方案

运行vue3&#xff0c;打开cpolar启动内网穿透&#xff0c;结果却发现 在vue.config.js中修改为如下代码&#xff1a; const { defineConfig } require(vue/cli-service);module.exports defineConfig({transpileDependencies: true,devServer: {allowedHosts: all,host: 0.0…

day06-MySQL学习笔记01

2024.08.17 day06-MySQL学习笔记 前言 前面说过&#xff0c;三层架构&#xff0c;其中dao层用于操作数据。在上面的项目中&#xff0c;数据放在了xml文件中。在企业开发中&#xff0c;数据一般存储在数据库中&#xff0c;我们直接对数据库操作。今天就学习如何操作数据库。 首…

赛氪网技术支持第八届集创赛全国总决赛:共绘集成电路创新蓝图

赛氪网技术支持第八届集创赛全国总决赛&#xff1a;共绘集成电路创新蓝图 山东&#xff0c;2024年8月19日至21日 —— 全国瞩目的第八届全国大学生集成电路创新创业大赛&#xff08;以下简称“集创赛”&#xff09;全国总决赛在美丽的海滨城市山东省烟台市隆重举行。本次大赛由…