文末有源代码下载地址

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. 请问anroid怎么播放aac文件。
  2. java概述、安装、配置环境、运行
  3. 下载丨7月数据库技术通讯:LINUX OS配置问题导致数据库重启
  4. 如何让linux自动回收内存,linux – 什么可以导致非活动内存增加以及如何回收它?...
  5. BAT命令手动_自动启动和禁用服务
  6. php 精准定位到街道,ip地址查询精确到街道_ip查询详细地址带地图
  7. 西门子、安川、三菱伺服技术完全精通系列丛书!
  8. nas服务器搭建网站,小白都能看懂的NAS服务器搭建教程
  9. 数据挖掘:数据清洗——缺失值处理
  10. 使用心得:[屏幕录制专家]与[Macromedia Captivate]的比拼
  11. Python+经济学:资本边际效率与IRR
  12. 基于JAVA出差报销管理系统
  13. 计算机视觉之人脸识别(Yale数据集)--HOG和ResNet两种方法实现
  14. social-GAN
  15. 时间管理自我管理的演讲稿
  16. C#:使用Spire.xls写Excel数据
  17. php里在调用wp,WordPress 教程:使用 WP_Http 在 WordPress 中发起 HTTP Request
  18. 遗传算法优化BP神经网络前后的对比
  19. 计算机组装与维护 听课记录,《计算机组装与维护》之“机箱和电源”说课稿...
  20. Could not locate zlibwapi.dll. Please make sure it is in your library path!问题解决

热门文章

  1. 力扣 2047. 句子中的有效单词数
  2. 卿学姐与公主(线段树区间求最大值)
  3. LaTeX模板:实验报告封面样式
  4. 【干货分享】Win8系统连接蓝牙耳机声音低或者音质低高效解决办法!!!
  5. 网络安全工具冰蝎(behinder)3.0使用教程
  6. 人工智能将会是百度推广的下一个制胜点么?
  7. 拓嘉辰丰电商:做好拼多多电商有哪些技巧
  8. 【MongoDB】$in和$eq操作数
  9. border-box和content-box的区别和解释
  10. win10开启wifi热点