第四章 接入发布的离线瓦片

系列文章目录

第一章 开源GIS选型

第二章 Geoserver+QGis开发环境搭建

第三章 Openlayers前端接入

第四章 接入发布的离线瓦片

摘要

geoserver发布瓦片数据、geoserver发布地图服务、geoserver教程、瓦片数据发布

前言

前面我们已经完成发布安徽省矢量地图数据的demo,但是实际项目中我么肯定不止这么干的,这样地图元素太少了,更多的做法是,最底层发布google地图、百度地图或者高德地图的瓦片数据,然后在其上面再发布我们的自定义矢量图层。那么我们就来看看如何发布离线的矢量数据吧,由于项目需求,发布的是离线瓦片

一、瓦片数据的下载

我这边有下好的google地图0-11级的瓦片数据,在我的资源里,免费的中国瓦片数据

下载链接为:

https://download.csdn.net/download/abu935009066/13110524

二、瓦片数据发布

这里我是踩了大坑了,之前一直以为要用geoserver去发布瓦片数据,搞了很久都没成功,后来才发现用tomcat或者nginx去发布这些静态图片资源就搞定了,具体步骤如下:

  1. 瓦片目录复制到tomcat的wabapps目录下,如下图所示:
    注意目录名称和位置
    在这里插入图片描述

  2. 注意跨域配置是否开启,如果未开启,可能地图加载不出来,解决方法具体参见:

    第三章 Openlayers前端接入中的跨域配置。

三、前端接入

核心代码

      var map = new ol.Map({
            target: 'map',
            layers: [
              new ol.layer.Tile({               // 使用XYZ的方式加载
                source: new ol.source.XYZ({
                    url: 'http://localhost:8080/china/{z}/{x}/{y}.png'
                })
              })
            ],
            view: new ol.View({
			center: [117.20914, 31.80354],
			  projection: 'EPSG:4326',
              zoom: 7
            })
        });

效果图:
在这里插入图片描述

总结

  • 发布离线瓦片数据,不是用geoserver发布的,而是tomcat或者nginx发布,结合着openlayers接入瓦片数据。

分享个很好用的免费工具
可以爬省市的矢量数据,以及各大厂商google、百度、高德等的瓦片数据
关注公众号【Java厂面试官】,回复:地图下载器
在这里插入图片描述

QQ群【837324215
关注我的公众号【Java厂面试官】,回复:架构资源等关键词(更多关键词,关注后注意提示信息)获取更多免费资料。

公众号也会持续输出高质量文章,和大家共同进步。

在Vue项目中使用离线瓦片地图服务,特别是使用OpenLayers 6框架与高德地图瓦片资源时,首先需要理解瓦片地图的概念。瓦片地图是一种将地图划分为多个小块图片(瓦片)的方法,这些瓦片可以单独请求和缓存,以提高地图的加载速度和减少服务器负担。 以下是使用OpenLayers 6在Vue项目中嵌入离线瓦片的基本步骤: 1. 准备离线瓦片数据:确保你有高德地图离线瓦片数据。通常这些数据需要预先下载并放置在服务器或本地文件系统中。 2. 配置Vue项目:在Vue项目中安装OpenLayers依赖,并在项目中正确引用OpenLayers。 例如,在`package.json`文件中添加OpenLayers依赖: ```json "dependencies": { "ol": "latest version" } ``` 然后运行`npm install`来安装依赖。 3. 在Vue组件中添加地图初始化代码:在Vue组件的`mounted`钩子中初始化OpenLayers地图,并添加离线瓦片图层。 以下是一个示例代码片段: ```javascript import 'ol/ol.css'; import Map from 'ol/Map'; import View from 'ol/View'; import TileLayer from 'ol/layer/Tile'; import TileWMS from 'ol/source/TileWMS'; import TileGrid from 'ol/tilegrid/TileGrid'; import XYZ from 'ol/source/XYZ'; export default { name: 'MapComponent', mounted() { const map = new Map({ target: 'map', // 对应到你的HTML模板中地图容器的id layers: [ new TileLayer({ source: new XYZ({ url: 'path_to_yourOfflineTiles/{z}/{x}/{y}.png', // 离线瓦片文件路径 tileGrid: new TileGrid({ resolutions: [156543.03390625, 78271.516953125, 39135.7584765625, 19567.87923828125, 9783.939619140625, 4891.969809570312, 2445.9849047851562, 1222.9924523925781, 611.4962261962891, 305.74811309814453, 152.87405654907226, 76.43702827453613, 38.218514137268066, 19.109257068634033, 9.554628534317017, 4.777314267158508, 2.388657133579254, 1.194328566789627, 0.5971642833948135, 0.29858214169740677, 0.14929107084870338], // 分辨率数组 extent: [-20037508.34, -20037508.34, 20037508.34, 20037508.34] // 世界范围 }) }) }) ], view: new View({ center: [0, 0], // 地图中心点坐标 zoom: 2 // 缩放级别 }) }); map.setTarget('map'); } } ``` 4. 在Vue模板中添加地图容器:确保HTML模板中有对应的地图容器元素。 ```html <div id="map" style="width: 100%; height: 100%;"></div> ``` 请注意,上面的代码需要根据实际情况进行调整,特别是瓦片的URL路径、分辨率数组和世界范围等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lakernote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值