文章目录

  • 一、介绍
  • 二、快速入门
    • 一、下载地图瓦片
    • 二、OpenLayers加载离线Arcgis瓦片

一、介绍

OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问。从OpenLayers2.2版本以后,OpenLayers已经将所用到的Prototype.js组件整合到了自身当中,并不断在Prototype.js的基础上完善面向对象的开发,Rico用到地方不多,只是在OpenLayers.Popup.AnchoredBubble类中圆角化DIV。

官网地址:https://openlayers.org/

特征

  • 支持平铺层:从OSM,Bing,MapBox,Stamen和您可以找到的任何其他XYZ源中拉出图块。还支持OGC映射服务和分层图层。
  • 支持矢量层:渲染来自GeoJSON,TopoJSON,KML,GML,Mapbox矢量图块和其他格式的矢量数据。
  • 运用先进技术:利用Canvas 2D,WebGL和HTML5的所有最新功能。开箱即用的移动支持。仅使用所需组件构建轻量级定制概要文件。
  • 易于定制和扩展:使用简单的CSS样式化地图控件。连接到不同级别的API或使用第三方库自定义和扩展功能。

二、快速入门

一、下载地图瓦片

我这里下载的是高德地图的Arcgis瓦片,使用的太乐地图下载器下载的,安装破解教程前往==>太乐地图下载器5.0.5(破解版)

下载完毕后的目录如下:

二、OpenLayers加载离线Arcgis瓦片

ol.cssol.js两个文件我们可以到官网去下载源文件。

输入网址,进入官网:

https://openlayers.org/

找到Get the Code菜单,下载代码。

选择最新版本v6.5.0版本的压缩包v6.5.0.zip

将文件解压到本地,ol.csscss文件夹内,ol.jsbuild文件夹内。

创建一个文件夹,将下载的瓦片复制到该文件夹里面,将上述的ol.js和ol.css文件分别复制出来:

然后在新建一个html文件粘贴下述代码,引入下载的ol.cssol.js

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>加载ArcGIS地图瓦片</title><link rel="stylesheet" href="css/ol.css"><script src="js/ol.js"></script>
</head>
<body>
<div id="map"></div>
<script type="text/javascript">// 设置地图中心,此处进行坐标转换, 把EPSG:4326(经纬度坐标),转换为EPSG:3857(WGS84网络墨卡托(辅助球))坐标,因为ol默认使用的是EPSG:3857坐标let centerPos = ol.proj.transform([117.27, 31.68], 'EPSG:4326', 'EPSG:3857');//创建地图let map = new ol.Map({view: new ol.View({center: centerPos,//地图中心位置zoom: 10,//地图初始层级maxZoom: 15,minZoom: 9}),target: 'map'});map.on('click', function (e) {// alert('X ; '+ e.clientX  + 'Y: '+e.clientY);let t = ol.proj.transform(map.getEventCoordinate(event), 'EPSG:3857', 'EPSG:4326');alert("鼠标点击处的经纬度:" + t);});//给8位字符串文件名补0function zeroFill(num, len, radix) {var str = num.toString(radix || 10);while (str.length < len) {str = "0" + str;}return str;}// ol.source.XYZ添加瓦片地图的层let tileLayer = new ol.layer.Tile({source: new ol.source.XYZ({tileUrlFunction: function (coordinate) {//alert(coordinate[0] + " X= " + coordinate[1] + " Y= " + coordinate[2]);var x = 'C' + zeroFill(coordinate[1], 8, 16);var y = 'R' + zeroFill(-coordinate[2] - 1, 8, 16);var z = 'L' + zeroFill(coordinate[0], 2, 10);return 'hefei/' + z + '/' + y + '/' + x + '.png';//这里可以修改地图路径},projection: 'EPSG:3857'})});map.addLayer(tileLayer);//添加到map里面
</script>
</body>
</html>

在浏览器上访问html文件:

上面的代码里有点击事件,鼠标点击地图可以显示经纬度,下面我们再来说说在地图上绘图功能

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>绘图</title><link rel="stylesheet" href="css/ol.css" type="text/css"><script src="js/ol.js"></script>
</head>
<body>
<div id="map"></div>
<label>Shape type &nbsp;</label>
<select id="type"><option value="Point">Point</option><option value="LineString">LineString</option><option value="Polygon">Polygon</option><option value="Circle">Circle</option><option value="Square">Square</option><option value="Box">Box</option><option value="None">None</option>
</select>
<script>let centerPos = ol.proj.transform([117.29, 31.85], 'EPSG:4326', 'EPSG:3857');let vectorSource = new ol.source.Vector();let vectorLayer = new ol.layer.Vector({source: vectorSource});//给8位字符串文件名补0function zeroFill(num, len, radix) {var str = num.toString(radix || 10);while (str.length < len) {str = "0" + str;}return str;}let map = new ol.Map({target: 'map',layers: [new ol.layer.Tile({source: new ol.source.XYZ({tileUrlFunction: function (coordinate) {var x = 'C' + zeroFill(coordinate[1], 8, 16);var y = 'R' + zeroFill(-coordinate[2] - 1, 8, 16);var z = 'L' + zeroFill(coordinate[0], 2, 10);return 'hefei/' + z + '/' + y + '/' + x + '.png';//这里可以修改地图路径},projection: 'EPSG:3857'})}),vectorLayer],view: new ol.View({center: centerPos,//地图中心位置zoom: 11,//地图初始层级maxZoom: 17,minZoom: 9}),});let typeSelect = document.getElementById('type');let draw;function addInteraction() {let type = typeSelect.value;if (type !== 'None') {let geometryFunction;switch (type) {case "Square":type = 'Circle';// 生成规则四边形的图形函数geometryFunction = ol.interaction.Draw.createRegularPolygon(4);break;case "Box":type = 'Circle';// 生成盒形状的图形函数geometryFunction = ol.interaction.Draw.createBox();break;default:break;}// 初始化Draw绘图控件draw = new ol.interaction.Draw({source: vectorSource,type: type,geometryFunction: geometryFunction});// 将Draw绘图控件加入Map对象map.addInteraction(draw);}}typeSelect.addEventListener('change', () => {// 移除Draw绘图控件map.removeInteraction(draw);addInteraction();});addInteraction();
</script>
</body>
</html>

Shift + 鼠标左键:手绘(free hand)模式

Openlayers加载离线地图Arcgis瓦片相关推荐

  1. openlayers加载离线地图并实现深色地图

    问题背景       我们自己一直使用的openlayer+geoserver自己发布的地图,使用的是矢量地图.但是由于政府地图大都使用为天地图,所以需要将geoserver的矢量地图更改为天地图,并 ...

  2. 使用openlayers加载离线地图

    什么是Openlayers? 简单来说,Openlayers是一个基于Javacript开发,免费.开源的前端地图开发库,使用它,可以很容易的开发出WebGIS系统.目前Openlayers支持地图瓦 ...

  3. Arcgis加载离线地图服务二次开发

    ARCGIS搭建离线地图服务器,进行离线地图二次开发 1.     离线地图金字塔瓦片数据  (下载数据教程:http://www.bigemap.com/helps/doc20190312126.h ...

  4. leaflet加载离线地图教程以及下载离线地图瓦片工具

    关于源码以及教程侵权请联系作者删除 最近在做一个leaflet加载离线地图的东西,结果在网上找到一份相关的教程以及源码 源码链接:https://pan.baidu.com/s/1cGew8PAU-L ...

  5. Cesium加载离线地图和离线地形

    文章目录 前言 一.Cesium加载离线地图 1.1 下载数据 2.2 数据处理 2.3 地图发布 2.4下载速度改进 二.Cesium加载离线地形 2.1 下载数据 2.2 数据处理 2.3 地形发 ...

  6. OpenLayers加载QQ地图(转)

    OpenLayers加载QQ地图 http://www.openlayers.cn/portal.php?mod=view&aid=4 2012-10-21 17:22| 发布者: admin ...

  7. Cesium加载离线地图

    Cesium加载离线地图 一.下载地图并导出为tms格式 二.安装nginx并配置静态文件服务路径 一.下载地图并导出为tms格式 利用地图下载器下载相关范围的地图,然后导出为tms格式的地图切片 二 ...

  8. vue openlayers 加载高德地图等 gcj02 的图层偏移问题

    vue openlayers 加载高德地图等 gcj02 的图层偏移问题 这个问题是在使用 openlayers 地图引擎加载高德地图或者是谷歌地图都会遇到的问题,所以说呢这篇博文稍微说一下解决办法. ...

  9. Cesium 加载离线地图服务

    Cesium 可以加载自定义的地图服务,一般在私有云上应用比较广. 原始地图数据有很多地方都可以下载.比如常用的下载工具,付费的有水经注.91助手等,还有国家空间地理服务的官网上也有可用的数据.假设你 ...

最新文章

  1. CSS before / after伪元素
  2. 如何选购晨检机器人_扫地机器人好不好用?如何选购?答案在这
  3. C++拷贝构造函数(深拷贝与浅拷贝)
  4. vue 获取当前元素的父元素_react获取触发元素的属性 e.target.dataset
  5. Windows平台下安装证书文件cer的步骤
  6. java的几种对象(PO,VO,DAO,BO,POJO)解释(转)
  7. 小米乘风破浪,雷军一往无前
  8. 天涯社区离线阅读器(实现只看楼主功能)
  9. 2018年全国多校算法寒假训练营练习比赛(第三场)I 三角形【皮克公式+gcd】
  10. 使用神器you-get获取萧大bilibili课程视频
  11. 数据链路层---差错检测和纠正
  12. 台达PLC与单片机的通讯
  13. html代码的魔方加密,魔方加密解密测试调试方法
  14. SaaS-HRM(3)企业部门管理前后台
  15. fp16与fp32简介与试验
  16. html+vue3 模拟下雨效果(手机版)
  17. 51nod 1301 集合异或和
  18. 卸载计算机应用程序的步骤,图文教您win10系统快速卸载应用程序的具体步骤
  19. B类直播产品化建设浅谈
  20. Android中的Service模板,通过Service发送通知并修改通知的提示音

热门文章

  1. 您的ISCSI够快吗?
  2. python 抓数_使用python抓取并分析数据
  3. Siemens Simcenter FloEFD 2021.1.0 v5312 for PTC Creo
  4. 全三轨磁条卡读卡器|阅读机|刷卡器MRS100串口通信协议 Communication Protocol
  5. M-Live的全能现场播放器、乐手鼓手的最佳演出工具B.Beat!
  6. 前端及其相关技术综述
  7. iterm2 字体颜色
  8. Ubuntu 安装 xubuntu 的xfce 桌面
  9. jvm垃圾回收——诊断垃圾收集问题
  10. web安全攻击方法流量分析