openlayers 地图默认使用 3857坐标系(墨卡托坐标系) <===> 我们常用的 4326坐标系(WGS84坐标系)

既然是两种不同坐标系,那就需要对经纬度进行转换,openlayers官方给出的转换公式是(你可以直接调用 fromLonLat和toLonLat):

// 4326坐标转3857坐标, 这是官方的源码,很好理解,就是你直接用fromLonLat然后只传第一参数,默认就是 4326 转 3857
export function fromLonLat(coordinate, opt_projection) {return transform(coordinate,'EPSG:4326',opt_projection !== undefined ? opt_projection : 'EPSG:3857');
}// 3857坐标转4326坐标, 你直接用toLonLat然后只传第一参数,默认就是 3857 转 4326
export function toLonLat(coordinate, opt_projection) {const lonLat = transform(coordinate,opt_projection !== undefined ? opt_projection : 'EPSG:3857','EPSG:4326');const lon = lonLat[0];if (lon < -180 || lon > 180) {lonLat[0] = modulo(lon + 180, 360) - 180;}return lonLat;
}

然后我这里给出的是经纬度转换计算公式:

// 3857坐标系转4326坐标系
// 经度= 平面坐标x/20037508.34*180
// 纬度= 180/(PI*(2*atan(exp(平面坐标y/20037508.34*180*PI/180))-PI/2)export function toLonLat(x, y) {let lon = (x / 20037508.34) * 180let lat = (y / 20037508.34) * 180lat = (180 / Math.PI) * (2 * Math.atan(Math.exp((lat * Math.PI) / 180)) - Math.PI / 2)return [lon, lat]
}// 4326坐标系转3857坐标系
// 平面坐标x = 经度*20037508.34/108 平面坐标y = log(tan((90+纬度)*PI/360))/(PI/360)*20037508.34/180
export function fromLonLat(lon, lat) {let x = (lon * 20037508.34) / 180let y = Math.log(Math.tan(((90 + lat) * Math.PI) / 360)) / (Math.PI / 180)y = (y * 20037508.34) / 180return [x, y]
}

openlayers6踩坑系列(七)坐标经纬度转换公式相关推荐

  1. openlayers6 踩坑系列(三)绘制和编辑(矩形,圆,多边形,点,线)

    重要:博客内使用地图全替换为WMap,想使用的请参考我这篇博客(WMap) 最近在做矢量图形这一块,发现圆形和多边形,都可以使用openlayers自带的Modify类进行编辑,然后随意放大缩小旋转, ...

  2. python导入类有红线_python踩坑系列之导入包时下划红线及报错“No module named”问题...

    python踩坑系列之导入包时下划红线及报错"No module named"问题 使用pycharm编写Python时,自己写了一个包(commontool),在同级另一个路径下 ...

  3. python代码下出现红线_python踩坑系列之导入包时下划红线及报错“No module named”问题...

    python踩坑系列之导入包时下划红线及报错"No module named"问题 使用pycharm编写Python时,自己写了一个包(commontool),在同级另一个路径下 ...

  4. 【踩坑系列】 SpringBoot ,SpringSecurity,activiti 项目无法正常跳转到登录界面

    [踩坑系列] SpringBoot ,SpringSecurity,activiti 项目无法正常跳转到登录界面 前言 一直强制跳转到springSecurity 的默认的登录界面,无法正常跳转到自己 ...

  5. 【踩坑系列】mysql 修改root密码失败

    [踩坑系列] mysql 修改root密码失败 问题原因 mysql 修改root密码失败 ,主要是因为root的host不是localhost,是%的问题. 修改密码的步骤 -- 切换到 mysql ...

  6. Oracle Clob类型踩坑系列

    Oracle Clob类型踩坑系列 1]存储过程中向Clob中插入值 插入32767字节长度数据.无报错 Declarev_Clob Clob := '[32767长度字节数据]'; BeginIns ...

  7. 微信开发踩坑系列一之Native支付

    微信开发踩坑系列一之Native支付 1.前言 1.1.文章说明 1.2.微信支付简介 1.3.项目技术栈 2.Native支付开发 2.1.官方描述 2.2.两种模式介绍 2.3.开发前准备工作 2 ...

  8. 【踩坑系列】uniapp之h5 跨域的问题

    文章目录 [踩坑系列]uniapp之h5 跨域的问题 前言 什么是跨域 如何解决 参考文章 [踩坑系列]uniapp之h5 跨域的问题 前言 在浏览器上调试移动端的界面,出现 不允许出现多个 'Acc ...

  9. java数字转大写 其他报异常_【踩坑系列】使用long类型处理金额,科学计数法导致金额转大写异常...

    python科学计算数据应用(第2版) 156.4元 (需用券) 去购买 > 1. 踩坑经历 上周,一个用户反馈他创建的某个销售单无法打开,但其余销售单都可以正常打开,当时查看了生产环境的ERR ...

  10. Linux阿里云服务器Tomact从部署到放弃(踩坑系列)

    最近在学后台,想一想应该在自己服务器做点什么,然后就去部署这个tomcat试试水! 不就是部署个tomcat吗,分分钟的事,然后就... 弄了我2小时(一直在踩坑),可能是因为我菜吧 1.首先在Lin ...

最新文章

  1. MySQL存储过程_创建-调用
  2. python2好还是python3好-新手入门选择Python2还是Python3
  3. 在dreamweaver mx中它只能对html文件可以进行编辑,【职称计算机考试网页制作历年试题及答案二】- 环球网校...
  4. 通过Image 对象动态装载图片,不可能立即得到图片的问题
  5. 更改MFC生成的程序的默认exe图标
  6. $* $@ $# $? $$ $! $0 $_
  7. 利用VBS合并Excel中相同单元格
  8. 【c++】构造函数初始化列表中成员初始化的次序性
  9. Python实战从入门到精通第十五讲——定义匿名或内联函数
  10. 宏程序自动生成软件_【软件】宏程序自动生成器V3.0下载
  11. 【Codecs系列】AVS1参考代码RM在Windows下编译以及AVS1编解码器的使用方法
  12. Failed to load registry 错误
  13. 免费的局域网协作办公方式—onlyoffice文档协作
  14. 计算机网络结构化布线的六个子系统,结构化网络综合布线系统有六大子系统组成...
  15. Uboot启动分析--start.S启动分析(1)
  16. Unity 3D游戏开发 - U3D入门 | 3D 模型重用之预制体
  17. pygame的简介与安装
  18. 信息图形领域的普利策奖-Malofiej Award(马洛菲杰奖)
  19. ESP32 寻迹模块测试
  20. 使用java容器(集合类)模拟商城

热门文章

  1. 禁用电子邮件服务器,启用或禁用对邮箱中的邮箱的 POP3 或 IMAP4 Exchange Server
  2. html设置字号为五号,怎么将公式编辑器里面编辑的公式大小设置为5号宋体
  3. Netfilter学习之NAT类型动态配置(二)NAT类型介绍及MASQUERADE用户层的实现
  4. 朱晔的互联网架构实践心得S1E1:Pilot
  5. Web前端html表格制作
  6. 曝一段十多年前的“情史”!
  7. 磁芯电流探头降额功率的主要原因是什么?
  8. VC++的Unicode编程
  9. 符号三角形_dfs算法
  10. 美国华盛顿州通过 ArcBlock 支持的区块链法案