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.hqwc.cn/news/176079.html

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

相关文章

OpenGL_Learn11(光照)

目录 1. 光照 2. 环境光照 3. 漫反射光照 4. 代码实战 1. 光照 在OpenGL中主要分以下几个光照类型 环境光照(Ambient Lighting)&#xff1a;即使在黑暗的情况下&#xff0c;世界上通常也仍然有一些光亮&#xff08;月亮、远处的光&#xff09;&#xff0c;所以物体几乎永远不…

mac homebrew.mxcl.php@5.6.plist

今天启动php5.6时 遇到了一个问题 servers % brew services start php5.6 Bootstrap failed: 5: Input/output error Try re-running the command as root for richer errors. Error: Failure while executing; /bin/launchctl bootstrap gui/501 /Users/ssh/Library/LaunchAge…

部分背包问题【贪心算法】

部分背包问题是一种经典的贪心问题&#xff0c;物品可以取一部分&#xff0c;也就是可以随意拆分的物品。 算法思路&#xff1a; 用列表保存每个物品的价值及总重量、平均价值&#xff08;性价比&#xff09;。输入数据同时计算每种物品的平均价值。使用自定义的compare函数以…

【数据结构】堆(Heap):堆的实现、堆排序、TOP-K问题

目录 堆的概念及结构 ​编辑 堆的实现 实现堆的接口 堆的初始化 堆的打印 堆的销毁 获取最顶的根数据 交换 堆的插入&#xff08;插入最后&#xff09; 向上调整&#xff08;这次用的是小堆&#xff09; 堆的删除&#xff08;删除根&#xff09; 向下调整&#xff08;这次用的…

Redis05-集群方案

目录 Redis集群方案 主从复制 主从复制的基本原理 主从复制的工作流程 乐观复制 主从复制的优势 哨兵机制 哨兵的关键作用 服务状态监控 哨兵选举Master规则 分片集群 分片集群中的数据读写 数据写入 数据读取 一致性哈希和客户端分片 Redis集群方案 微服务时代…

从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景

文章目录 BIO优缺点示例代码 NIO优缺点示例代码 AIO优缺点示例代码 总结 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 BIO、NIO和AIO是Java编程语言中用于处理输入输出&#xff08;IO…

iOS OpenGL ES3.0入门实践

一、效果图 入门实践&#xff0c;做的东西比较简单&#xff0c;效果如下&#xff1a; 二、关于顶点坐标和纹理坐标 绘制图片需要设置顶点坐标和纹理坐标并加载像素数据&#xff0c;之所以要指定两组坐标是因为纹理和顶点使用不同的坐标系&#xff0c;就是告诉OpenGL&#xf…

GZ038 物联网应用开发赛题第3套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 &#xff08;第3套卷&#xff09; 工位号&#xff1a;______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具&#xff0c;操作安全规范&#xff1b; 2、竞赛过程中如有异议&#xff0c;可向现场考评…

【LIUNX】配置缓存DNS服务

配置缓存DNS服务 A.安装bind bind-utils1.尝试修改named.conf配置文件2.测试nslookup B.修改named.conf配置文件1.配置文件2.再次测试 缓存DNS服务器&#xff1a;只提供域名解析结果的缓存功能&#xff0c;目的在于提高数据查询速度和效率&#xff0c;但是没有自己控制的区域地…

后台系统更改主题【el-color-picker】

Element el-color-picker 颜色选择器的使用 设置的页面 <script setup lang"ts"> import { getThemeColor } from "../../utils/colorChange"; import { useUserStore } from "/store/index"; import { reactive } from "vue"…

高防IP可以抵御哪些恶意攻击

高防IP协议可以隐藏用户的站点&#xff0c;使得攻击者无法发现恶意攻击的目标网络资源&#xff0c;从而提高了源站的安全性。能够有效抵御常见的恶意攻击类型ICMPFlood、UDPFlood、 TCPFlood、SYNFlood、ACKFlood等&#xff0c;帮助游戏、金 融、电子商务、互联网、政企等行业抵…

Linux---(五)三大工具yum、vim、gcc/g++

文章目录 一、yum工具1.Linux中安装软件的方法&#xff1a;2.什么是yum?3.yum源更新 二、Linux编辑器--vim1.IDE例子2.vim&#xff08;1&#xff09;vim的常用模式及切换模式&#xff08;2&#xff09;底层模式常用命令&#xff08;3&#xff09;插入模式常用命令&#xff08;…