vue离线地图(瓦片)

最近公司要弄一个这样的离线地图,要求在图上打点画线之类的。折腾了几天,学习了三种方式:

1.拿到各省市区的经纬度json,通过echarts来制作,再套一个卫星图的地图背景
2.下载地图瓦片,再通过百度/高德的离线api来实现
3.同样是地图瓦片,通过openlayers来实现

在这里插入图片描述
主要说一下2,3两种方式。

地图瓦片
1.首先是要下载地图瓦片,选择地图勾选上层级,选择区域。(网上的地图下载器也是很多,随便找一个就行)
在这里插入图片描述

2.nginx做地图代理,找到文件conf并在location中去配置瓦片的地址

在这里插入图片描述在这里插入图片描述

如果缺少权限的话,需要在conf的第一行加上user root;
双击nginx.exe启动,访问localhost:端口(nginx.conf中的端口)。

在这里插入图片描述

百度离线
1.下载百度离线文件,配置代理地址,并在index.html中引入。

在这里插入图片描述
在这里插入图片描述

2.代码如下

<template><div class="hello"><div id="container"></div></div></template><script>export default {name: "HelloWorld",mounted() {this.builmap();},methods: {builmap() {let map = new window.BMap.Map("container", { minZoom: 5, maxZoom: 17 });let point = new window.BMap.Point(109.23024, 34.65505);map.centerAndZoom(point, 12);map.setMapType(BMAP_HYBRID_MAP);map.enableScrollWheelZoom(true);map.addEventListener("click", function(e) {console.log(e.point.lng + "," + e.point.lat);});}}};</script><style scoped lang="less">#container {width: 1980px;height: 600px;background-color: #162369;}</style>

实现效果:

在这里插入图片描述
openlayers实现
文档地址

1.安装openlayers

 npm install ol --save

2.需要注意的是不同版本ol导入和使用的方式可能有所不同(代码如下)

<template><div id="map" ></div></template><script>import 'ol/ol.css'import TileLayer from 'ol/layer/Tile'import XYZ from 'ol/source/XYZ'import { Style, Icon, Fill, Text ,Stroke} from "ol/style";import { Point } from "ol/geom";import { Feature, Map, View } from 'ol'import { fromLonLat ,transform,toLonLat } from 'ol/proj'import VectorSource from 'ol/source/Vector'import VectorLayer from 'ol/layer/Vector'export default {data() {return {map: null,pointLayer: null,mapView: {center: fromLonLat([110.23024, 36.65505]), // 地图中心点zoom: 10, // 初始缩放级别minZoom: 6, // 最小缩放级别constrainResolution:true,maxZoom: 13 // 最大缩放级别},// 瓦片引入地址 nginxmapUrl: `http://localhost:80/overlay/{z}/{x}/{y}.png`,mapUrl2: `http://localhost:80/satellite/{z}/{x}/{y}.jpg`}},mounted() {this.initMap()this.addPoints()},methods: {// 初始化地图initMap() {const tileLayer = new TileLayer({source: new XYZ({url: this.mapUrl})})const tileLayer2 = new TileLayer({visible: true,source: new XYZ({url: this.mapUrl2})})this.map = nullthis.map = new Map({layers: [tileLayer2,tileLayer],view: new View(this.mapView),target: 'map',// 将地图注入到 dom 元素中projection:'EPSG:4326'})},addPoints(coordinate=[110.23024, 36.65505]) {// 设置图层this.pointLayer = new VectorLayer({source: new VectorSource(),});// 添加图层this.map.addLayer(this.pointLayer);// 创建featureconst feature = new Feature({geometry: new Point(fromLonLat(coordinate)),});feature.setStyle(this.getIcon(coordinate));this.pointLayer.getSource().addFeatures([feature]);},getIcon(coordinate) {var styleIcon = new Style({// 设置图片效果image: new Icon({src: require("@/assets/vip.png"),anchor: [1, 1],}),text: new Text({// 添加文字描述text: "一个点位1054", font: "20px font-size", // 设置字体大小fill: new Fill({// 设置字体颜色color: "#fff",}),offsetY: 10, // 设置文字偏移量}),});return styleIcon;},}}</script><style scoped lang="less">#map {width:1980px;height:800px;}</style>

3.实现效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/192686.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习之路 —— 异常、集合、Stream

文章目录 1. 异常2. 集合2.1 遍历2.1.1 迭代器2.1.2 增强for循环2.1.3 Lambda 2.2 List2.3 Set2.3.1 HashSet2.3.2 LinkedHashSet2.3.3 TreeSet 2.4 Map 3. Stream 1. 异常 Exception&#xff1a;叫异常&#xff0c;是程序员可以捕捉的。异常又分为了2类&#xff1a; 运行时异…

数据结构:红黑树的原理和实现

文章目录 红黑树的概念红黑树的性质红黑树的模拟实现红黑树的平衡问题 整体实现和测试 本篇用于进行红黑树的拆解和模拟实现&#xff0c;为之后的map和set的封装奠定基础 红黑树的概念 红黑树也是一种二叉搜索树&#xff0c;但是在每一个节点的内部新增了一个用以表示该节点颜…

pytorch框架学习(tensorboard的使用)

什么是tensorboard&#xff1f; tensorboard是一个可视化工具&#xff0c;它可以把训练过程中的数据变化以图像的形式绘制出来&#xff0c;或者记录训练过程中使用的图片 tensorboard的安装&#xff1a; 在pycharm的终端中输出安装命令后自动安装—— pip install tensorbo…

IP地址查询在社交行业中的崭新应用

在社交媒体蓬勃发展的今天&#xff0c;IP地址查询技术IP66_ip归属地在线查询_免费ip查询_ip精准定位平台正在成为社交行业中的一项强大工具。这项技术不仅为社交平台提供了更多个性化服务的可能&#xff0c;还在用户安全和内容管理等方面发挥了关键作用。本文将深入探讨IP地址查…

什么是集成测试?集成的方法有哪些?

前言 综合测试整合测试非常复杂&#xff0c;需要一些开发和逻辑技能。的确如此&#xff01;那么把这个测试整合到我们的测试策略中的目的是什么呢&#xff1f;这个问题我们先不着急回答&#xff0c;让我们一步步往下看你就知道了。 为什么要进行集成测试&#xff1f; 以下是一…

UE4动作游戏实例RPG Action解析四:装备系统

导语: 以加血道具为例,详细分析拆解ActionRPG的装备系统,包含装备系统需求和数据结构设计,以及实现 一、装备系统需求: 装备槽: 已获取装备和未获取装备: 当已经装备一个道具时,再次捡到道具,会把道具放在装备库,不会放在装备槽中, 当没有装备道具时,会拾取道具…

算法通关村第十六关青铜挑战——原来滑动窗口如此简单!

大家好&#xff0c;我是怒码少年小码。 从本篇开始&#xff0c;我们就要开始算法的新篇章了——四大思想&#xff1a;滑动窗口、贪心、回溯、动态规划。现在&#xff0c;向我们迎面走来的是——滑动窗口思想&#xff01;&#x1f61d; 滑动窗口思想 概念 在数组双指针里&am…

别试错了,是该关注一下软件内在质量了

太多这种例子了&#xff0c;老板们早上出的新想法&#xff0c;恨不得第二天就能上线。。每个互联网公司都试图突破固定领地&#xff0c;不断地尝试新的业务&#xff0c;一旦发现不行&#xff0c;就立刻砍掉&#xff0c;名曰“试错”。 研发部门&#xff0c;为了应对压力&#…

vue中通过.style.animationDuration属性,根据数据长度动态设定元素的纵向滚动时长的demo

根据数据长度动态设定元素的animation 先看看效果&#xff0c;是一个纯原生div标签加上css实现的表格纵向滚动动画&#xff1a; 目录 根据数据长度动态设定元素的animationHTMLjs逻辑1、判断是数据长度是否达到滚动要求2、根据数据长度设置滚动速度 Demo完整代码 HTML 1、确…

【机试题】LazyIterator迭代器懒加载问题

将下面这个未完成的Java工具类补充完成&#xff0c;实现懒加载的功能&#xff0c;该类需要实现Iterable接口&#xff0c;能够遍历所有数据。具体要求如下&#xff1a; 工具类提供了一个ValueLoader接口&#xff0c;用于获取数据&#xff0c;其中ValueLoader的接口定义为&#x…

【Python】一文带你掌握数据容器之集合,字典

目录&#xff1a; 一、集合 思考&#xff1a;我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景为何又需要学习新的集合类型呢? 通过特性来分析: &#xff08;1&#xff09;列表可修改、支持重复元素且有序 &#xff08;2&#xff09;元组、字符…

asp.net图书管理系统

asp.net图书管理系统 基本操作图书管理 读者管理 借书 修改资料 修改密码 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于C#winform架构和sql server数据库 功能模块&#xff1a; 图书管理 读者管理 借书 修改资料 修改…

JavaScript概述

一、JavaScript简介&#xff1a; JavaScript是互联网上流行的脚本语言&#xff0c;可用于HTML和web&#xff0c;可广泛应用于服务器、PC、笔记本、平板电脑和智能手机等设备。 JavaScript是一种轻量级的编程语言&#xff0c;可插入HTML页面的编程代码&#xff0c;插入HTML页面后…

千兆路由只有200M,原来是模式选择不对,也找到了内网不能通过动态域名访问内部服务的原因

本来1000M的宽带接入的&#xff0c;但是一测试发现只有200M&#xff0c;把电信叼了过来&#xff0c; 一测试发现宽带没问题&#xff0c;网线正常&#xff0c;网卡正常&#xff0c;只有可能是路由器的问题了&#xff0c;尴尬了&#xff0c;赶紧给满意好评放他走。回头好好研究一…

Springboot项目返回数据统一封装

Springboot项目返回数据统一封装,支持swagger。 正常swagger会根据数据库表的注释显示对应的参数释义等。但当我们使用统一接口返回map时&#xff0c;部分注释等信息会被掩盖消失。在此提供三个java类即可满足统一封装返回接口&#xff0c;也可显示对应的swagger释义等。 1.Er…

包教包会:Mysql主从复制搭建

笑小枫的专属目录 一、无聊的理论知识1. 主从复制原理2. 主从复制的工作过程3. MySQL四种同步方式 二、docker下安装、启动mysql1. 安装主库2. 安装从库 三、配置Master(主)四、配置Slave(从)五、链接Master(主)和Slave(从)六、主从复制排错1. 错误&#xff1a;error connectin…

链表的逆置

方法1&#xff1a; 依次将指针反向&#xff0c;最后令头指针指向尾元素。 逆置过程如下&#xff1a; 当q指针为空时&#xff0c;循环结束。 //试写一算法&#xff0c;对单链表实现就地逆置&#xff0c; void Reverse1(List plist)//太复杂,不用掌握 {assert(plist ! NULL);i…

linux 信号

信号的定义 在计算机科学中&#xff0c;信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制&#xff0c;用来提醒进程一个事件已经发生。当一个信号发送给一个进程&#xff0c;操作系统中断了进程正常的控制流程&#xff…

五、nacos安装指南

Nacos安装指南 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; GitHub主页&#xff1a;https://github.com/alibaba/nacos GitHub的Release下载…

自然语言处理(NLP)-spacy简介以及安装指南(语言库zh_core_web_sm)

spacy 简介 spacy 是 Python 自然语言处理软件包&#xff0c;可以对自然语言文本做词性分析、命名实体识别、依赖关系刻画&#xff0c;以及词嵌入向量的计算和可视化等。 1.安装 spacy 使用 “pip install spacy" 报错&#xff0c; 或者安装完 spacy&#xff0c;无法正…