文末有源代码下载地址

2.1使用OpenLayers6加载Mapbox的TileJSON格式地图

首先写一下Tile格式和TileJSON格式的区别,Tiles 是传统的瓦片地图服务,Tiles 服务在 OpenLayers 6 中对应的数据源是ol.source.XYZ,如第一篇文章中使用ol6加载天地图和高德地图都属于这一种情况;而TileJSON 是在传统切片地图的基础上,通过 JSON 给出切片 URL,以及与图层紧密关联的约束信息,TileJSON服务在OpenLayers6中对应的数据源是ol.source.TileJSON,画成示意图如下:


这里补充一下关于EPSG代号和坐标系之间查询的一个网站:https://epsg.io/


下面是实现代码,基本上和前一篇文章的代码结构差不多,核心就是一个ol.Map,只不过注意修改ol.source.TileJSON的位置就可以了,对于使用的地图source的url每一部分的含义,代码中给出了注释。

<!DOCTYPE html>
<html lang="ch">
<head><meta charset="UTF-8"><title>加载Mapbox的TileJSON格式地图</title><link href="css/ol.css" rel="stylesheet" type="text/css"><script src="libs/ol6/ol.js" type="text/javascript"></script><style>#map{width: 100%;height: 100%;position: absolute;}</style>
</head>
<body><div id="map"></div><script>var MapboxLayer=new ol.layer.Tile({source: new ol.source.TileJSON({//v4表示MapBox的API版本,satellite是地图样式,access_token后面是开发者key,可以在网站进行申请url: "https://api.tiles.mapbox.com/v4/mapbox.satellite.json?secure&access_token=这里是您的access_token,也就是所谓的开发者key",//对跨域类型属性的一个声明,其实我也不太明白声明这一下的意义,不过还是写上比较好,防止访问不到数据crossOrigin: "anonymous"})})var map = new ol.Map({layers: [MapboxLayer],target: 'map',view: new ol.View({center: [114.5, 38],zoom: 4,minZoom:2,maxZoom:18,projection:'EPSG:4326'})});</script>
</body>
</html>

2.2实现点击弹出经纬度popup的效果

有了上面加载TileJSON地图的基础后,就可以做下面的点击显示经纬度弹窗了,这里需要使用到ol.Layer类的对象,并且与弹出的窗体的DOM对象进行绑定,如下图

详细代码如下图所示

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>实现一个简单的弹出式窗口</title><link href="css/ol.css" rel="stylesheet" type="text/css"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" type="text/css"><script src="libs/ol6/ol.js" type="text/javascript"></script><style>#map{width: 100%;height: 100%;position: absolute;}.ol_popup {position: absolute;background-color: #FFFFCC;-webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));padding: 15px;border-radius: 10px;border: 1px solid #cccccc;bottom: 10px;left: -50px;min-width: 280px;}.ol_popup:after,.ol_popup:before {top: 100%;border: solid transparent;content: " ";height: 0;width: 0;position: absolute;pointer-events: none;}.ol_popup:after {border-top-color: white;border-width: 10px;left: 50px;margin-left: -10px;}.ol_popup:before {border-top-color: #cccccc;border-width: 10px;left: 50px;margin-left: -10px;}.ol_closePopup {text-decoration: none;position: absolute;top: 5px;right: 10px;}.ol_closePopup:after {content: "关闭";}</style>
</head><body>
<div id="map" class="map"></div>
<div id="popup" class="ol_popup"><a href="#" id="popupClose" class="ol_closePopup"></a><div id="showLonLat"></div>
</div>
<script>//对popup需要的DOM对象进行缓存var popUpContent = document.getElementById("popup");var popUpCloser = document.getElementById("popupClose");var showLatLon = document.getElementById("showLonLat");//创建一个overlay叠加层var overlay = new ol.Overlay({//与popup对象进行绑定element: popUpContent,//当点击位置的弹窗超出显示范围时,会自动平移,且平移动画时常为0.25sautoPan: true,autoPanAnimation: {duration: 250}});//对于弹窗,为点击“关闭"事件添加一个关闭的处理函数popUpCloser.onclick = function () {overlay.setPosition(undefined);popUpCloser.blur();return false;};var map = new ol.Map({layers: [new ol.layer.Tile({source: new ol.source.TileJSON({url:"https://api.tiles.mapbox.com/v4/mapbox.satellite.json?secure&access_token=这里是您的access_token,也就是开发者key",crossOrigin: "anonymous"})})],//类似于layers,有几个layer就有几个数组元素,这里有几个overlays就有几个overlay的数组元素overlays: [overlay],target: "map",view: new ol.View({center: [0, 0],zoom: 2})});//对map对象添加一个单击则显示弹窗的事件响应函数map.on("singleclick", function (evt) {//获取点击时的位置坐标,此时是3857坐标系,是XY坐标var coordinate = evt.coordinate;//转换为经纬度坐标并格式化var LonLat = ol.coordinate.toStringHDMS(ol.proj.toLonLat(coordinate));showLatLon.innerHTML = "<p>此处的坐标是:</p><code>" + LonLat + "</code>";overlay.setPosition(coordinate);});</script>
</body></html>

源码下载地址:

链接:https://pan.baidu.com/s/1cfDXtJVwMnCNwtuuI9fv9g 
提取码:7u61

2.使用OpenLayers6(ol6)加载Mapbox的TileJSON格式地图实现点击弹出经纬度信息相关推荐

  1. Mapbox加载天地图CGCS2000矢量瓦片地图服务

    1.背景 最近在做天地图的项目,要基于MapBox添加CGCS2000矢量切片数据,但是 Mapbox 只支持web 墨卡托(3857)坐标系的数据.Github有专业用户修改了mapbox-gl的相 ...

  2. 使用cesium加载mapbox地图底色的办法

    使用cesium加载mapbox地图底色的办法 安装:vue-cli-plugin-cesium插件 vue-cli-plugin-cesium - npm 获取cesium的token: 申请ces ...

  3. 005:vue+openlayers加载Mapbox地图示例

    第005个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中加载Mapbox地图. 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 示例效果 ...

  4. 在matplotlib中加载mapbox底图(TransBigData)

    TransBigData包介绍:地图底图 - TransBigData 0.1.28 文档https://transbigdata.readthedocs.io/zh_CN/latest/plot_m ...

  5. 在window下使用gemsim.models.word2vec.LineSentence加载语料库文件的格式要求

    在window下使用gemsim.models.word2vec.LineSentence加载语料库文件的格式要求 class LineSentence(object):""&qu ...

  6. vs2015web项目无法加载64位c++的dll,提示试图加载不正确的格式

    vs2015无法加载64位c++的dll,提示试图加载不正确的格式! 开始用winform引用64位的c++的dll,在项目的属性设置生成里面选择any cpu或者x64都可以成功! 但在web项目和 ...

  7. ios 高德地图加载瓦片地图_OpenLayers加载谷歌地球离线瓦片地图

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer加载谷歌地球离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/openla ...

  8. 高德地图 sdk 加载 geoserver 发布的瓦片地图服务

    前言 最近,碰到了需求,想要在高德 sdk 中使用在 geoserver 里面发布的瓦片地图. 还好经过一番研究,在其官方文档中发现,从新版本(v1.4.3开始)的高德 sdk 开始,已经支持加载第三 ...

  9. ThreeJS加载geojson数据实现3D地图

    ThreeJS加载geojson数据实现3D地图,主要通过借助geojson地理信息数据转摩托尔坐标实现,中间借助了d3.js的地图处理方法,最后通过threejs渲染到页面上: 通过平台获取GeoJ ...

最新文章

  1. Nat. Commun | 用于全基因组药物重定位的系统网络算法
  2. ssm框架的整合搭建(一)
  3. 乞丐版HTML5播放器
  4. Apache(4)——配置文件里的各参数(2)
  5. ORA-06502:PL/SQL :numberic or value error: character string buffer too small
  6. 笔记本内置扬声器三强PK
  7. 2017.3.25 矩阵快速幂 求斐波那契数列第n项
  8. Pentium的指令系统(1)——Pentium的寻址方式
  9. php openssl des ecb,php7.2 des-ede3-ecb加密报错:openssl_encrypt():Unknown cipher algorithm 落叶随风博客...
  10. java和c语言的区别_都说C语言不会过时,但你是否还需要掌握其他语言?
  11. 蓝桥杯:2018年第九届蓝桥杯省赛B组第七题—螺旋折线
  12. django在window和linux,从windows导入Django项目到linux时出错
  13. 【优化算法】水基湍流优化算法(TFWO) 【含Matlab源码 1585期】
  14. 猿创征文|C++软件开发值得推荐的十大高效软件分析工具
  15. 25_多易教育之《yiee数据运营系统》OLAP平台-画像分析篇
  16. 《自然语言处理实战入门》 第一章: 自然语言处理(NLP)技术简介
  17. ZooX首发双向电动无人车,会成为自动驾驶出行的主流吗?
  18. melp算法matlab,svpwm过调制算法研究与实现 [MELP声码器的算法研究及实现]
  19. 基于bing 搜索引擎和 Microsoft Academic Search 的高校申请指南的NABC分析
  20. python 008 __ 小斌文档 | 元组

热门文章

  1. 新版火狐中的BossKey
  2. 三、快速抠黑色背景花纹图案
  3. js给base64图片加水印
  4. 笔记3 · C++在编码中带来哪些改变
  5. [项目管理-11]:软硬件项目管理 - 项目管理三要素与项目管理模式
  6. 微信小程序 九宫格抽奖
  7. 在ROS2运行urdf_tutorial例程
  8. Node.JS中调用JShaman,加密JS代码
  9. 2023年最新QQ设置彩色昵称和动态头像
  10. Facebook 低调开发 AI 技术工具:自动扫描代码找漏洞