ol3开发离线地图

注意:国内地图均经过加密,尤其是百度地图,经过了二次加密,通常情况下都会存在偏差。所以最好是利用地图下载器下载后面带有“无偏差”的地图,否则需要对经纬度进行转化。

1、需要的前端库文件有jquery.js、ol.js、ol.css。网上百度一番不难找,实在找不到的可以留言我发给你。

2、需要有地图的瓦片图。网上有各类工具:全能电子地图下载器,水经注地图下载器等等,可以免费将百度、谷歌、高德、腾讯等的地图制作成瓦片图后下载下来。同上,百度一番不难找,实在找不到可以留言。

3、首先在body中定义一个div用以存放地图,注意需要设置id

<div id="map" style="width: 80%;height: 80%;"></div>

4、js实现加载地图

第一个参数[111.36,26.25]为地图的中心位置,后面的两个参数是地图的坐标系,ol3默认情况下是3857,我们需要把经纬度从4326转化为3857。这样才不会错位。
var center = ol.proj.transform([111.36, 26.25], 'EPSG:4326', 'EPSG:3857');
设置离线地图的图层。通常我们下载下来的地图都会是类似d://roadmap/z/y/x.png这样的格式,其中zyx为数字,或是数据加一个字母,z代表图层,y代表y轴,x代表x坐标
将下载下来的地图放到项目里面,url设置对应的路径 var offlineMapLayer = new ol.layer.Tile({ source: new ol.source.XYZ({ url: 'roadmap/{z}/{x}/{y}.png' }) });

ol3中一个完整的地图至少需要3个要素:1、图层layers,可以同时设置多个图层,按照先后顺序进行覆盖;2、中心坐标;3、地图容器

// 创建地图
var map = new ol.Map({
      // 设置地图图层
      layers: [
       offlineMapLayer//将我们上一步设置好的离线地图加载进来
      ], 
      // 设置显示地图的视图
      view: new ol.View({
        //projection: 'EPSG:4326',
        center: center,    // 将之前定义好的中心点放进来
        zoom: 10,      //设置地图默认展开到第10个图层,即默认z=10
      }),
      // 让之前id为map的div作为地图的容器
      target: 'map',
});

完成以上步骤,一个最简单的离线地图就完成了。

转载于:https://www.cnblogs.com/yxth/p/6496866.html

为了在Vue3中使用OpenLayers显示离线地图,您需要执行以下步骤: 1. 首先,您需要安装OpenLayers和proj4js依赖项。您可以使用以下命令进行安装: ```shell npm install ol proj4 --save ``` 2. 接下来,您需要下载离线地图瓦片。您可以使用QGIS等工具创建自己的离线地图瓦片,或者从第三方提供商下载现成的瓦片。将下载的瓦片放在您的项目中的public文件夹中。 3. 在Vue组件中,您需要导入OpenLayers和proj4js库,并创建一个地图实例。您需要使用proj4js库来设置地图的投影方式。以下是一个示例组件: ```vue <template> <div id="map" class="map"></div> </template> <script> import 'ol/ol.css'; import { Map, View } from 'ol'; import TileLayer from 'ol/layer/Tile'; import OSM from 'ol/source/OSM'; import XYZ from 'ol/source/XYZ'; import proj4 from 'proj4'; export default { name: 'MapComponent', mounted() { // 设置投影方式 proj4.defs('EPSG:3857', '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs'); // 创建地图实例 const map = new Map({ target: 'map', layers: [ new TileLayer({ source: new XYZ({ url: '/tiles/{z}/{x}/{y}.png', // 离线瓦片路径 }), }), ], view: new View({ center: [0, 0], zoom: 2, projection: 'EPSG:3857', }), }); }, }; </script> <style> .map { height: 500px; } </style> ``` 在上面的示例中,我们使用XYZ源加载离线瓦片,并将其添加到地图图层中。我们还设置了地图的投影方式为EPSG:3857。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值