OpenLayers加载高德瓦片与GCJ02坐标转换实战(08)
OpenLayers加载高德瓦片高德坐标最简单的地图集成方案如果你的数据来自高德地图API底图也用高德瓦片那恭喜你——这是所有地图集成方案里最简单的一种。坐标不用偏移、瓦片不用封装只需要做一次投影转换。这篇文章把完整实现和正反转换公式都整理清楚了。先说结论高德坐标GCJ02 高德瓦片只需要一步转换GCJ02经纬度 → EPSG:3857墨卡托手写公式10行搞定不需要任何第三方库。一、为什么这是最简单的场景要素坐标系说明数据GCJ02高德API返回的坐标底图GCJ02高德瓦片OpenLayersEPSG:3857需要投影转换数据和底图都是GCJ02不需要处理坐标偏移只做一次投影。对比其他方案场景转换步骤复杂度高德高德1步简单百度高德2步手写中等百度百度1步中等瓦片特殊百度天地图2步简单二、正反转换公式正向GCJ02 → EPSG:3857constgcj02ToMercator(coord){constR6378137constlngcoord[0]*Math.PI/180constlatcoord[1]*Math.PI/180constxR*lngconstyR*Math.log(Math.tan(Math.PI/4lat/2))return[x,y]}反向EPSG:3857 → GCJ02点击地图获取坐标时用constmercatorToGCJ02(coord){constR6378137constxcoord[0]constycoord[1]constlng(x/R)*180/Math.PIconstlat(2*Math.atan(Math.exp(y/R))-Math.PI/2)*180/Math.PIreturn[lng,lat]}验证constoriginal[116.411299,39.908054]constmercatorgcj02ToMercator(original)constbackmercatorToGCJ02(mercator)console.log(original[0].toFixed(6)back[0].toFixed(6))// trueconsole.log(original[1].toFixed(6)back[1].toFixed(6))// true精度说明手写公式是球体墨卡托和OpenLayers内置的fromLonLat椭球体有几米偏差。北京地区约3-5米瓦片地图场景完全够用。三、完整Vue3组件template div classwh100 refolMapRef/div /template script setup import {ref, onMounted} from vue import Map from ol/Map import View from ol/View import TileLayer from ol/layer/Tile import VectorLayer from ol/layer/Vector; import VectorSource from ol/source/Vector; import {GeoJSON} from ol/format; import {Circle as CircleStyle, Fill, Stroke, Style} from ol/style; import XYZ from ol/source/XYZ; // GCJ02经纬度 → WebMercator(EPSG:3857) const gcj02ToMercator (coord) { const R 6378137 const lng coord[0] * Math.PI / 180 const lat coord[1] * Math.PI / 180 const x R * lng const y R * Math.log(Math.tan(Math.PI / 4 lat / 2)) return [x, y] } // WebMercator(EPSG:3857) → GCJ02经纬度 const mercatorToGCJ02 (coord) { const R 6378137 const x coord[0] const y coord[1] const lng (x / R) * 180 / Math.PI const lat (2 * Math.atan(Math.exp(y / R)) - Math.PI / 2) * 180 / Math.PI return [lng, lat] } const olMapRef ref(null) onMounted(() { const center gcj02ToMercator([116.411299, 39.908054]) const map new Map({ target: olMapRef.value, layers: [ new TileLayer({ source: new XYZ({ url: http://webrd0{1-4}.is.autonavi.com/appmaptile?langzh_cnsize1scale1style8x{x}y{y}z{z}, tileSize: 256, crossOrigin: anonymous }) }) ], view: new View({ center: center, zoom: 10, projection: EPSG:3857 }) }) // 添加点验证 let geoJsonData { type: FeatureCollection, features: [{ type: Feature, id: 1, properties: { name: , level: 10, zIndex: 200 }, geometry: { type: Point, coordinates: center } }] } const layer new VectorLayer({ source: new VectorSource({ features: new GeoJSON({}).readFeatures(geoJsonData) }) }) layer.setStyle(new Style({ image: new CircleStyle({ radius: 5, fill: new Fill({ color: #ff0000 }), stroke: new Stroke({ color: #ff0000, width: 3 }) }), })) map.addLayer(layer) }) /script四、点击获取高德坐标在实际项目中经常需要点击地图获取高德坐标用于业务map.on(click,(e){// e.coordinate 是 EPSG:3857 墨卡托坐标constgcj02mercatorToGCJ02(e.coordinate)console.log(高德坐标经度${gcj02[0].toFixed(6)}, 纬度${gcj02[1].toFixed(6)})})五、全场景转换速查表源坐标底图转换方式GCJ02高德gcj02ToMercator1步BD09高德BD09 → GCJ02gcj02ToMercator2步BD09百度BD09 → BD09MCgcoord直接转BD09天地图BD09 → EPSG:4326 → EPSG:3857更新日期2026年8月调试版本OpenLayers 10.9.0

相关新闻

Semaphore实现线程同步

Semaphore实现线程同步

以下是您提供的 14 个 Java 并发程序示例的简要执行说明和核心要点。 1. Semaphore信号量示例 (Listing 1) 功能:演示使用 Semaphore 控制对共享资源(Shared.count)的访问,确保同一时间只有一个线程(IncThread 或 De…

2026/10/18 3:01:46 阅读更多 →
软件开发中的上下文湮灭:从代码考古到主动防腐的工程实践

软件开发中的上下文湮灭:从代码考古到主动防腐的工程实践

那天下午,我盯着屏幕上那个运行了三天三夜的脚本,它终于吐出了最后一行日志。脚本的任务很简单:遍历一个旧项目的代码仓库,找出所有被标记为“待重构”的注释块,然后生成一份报告。报告生成了,密密麻麻列出…

2026/10/18 3:03:53 阅读更多 →
Clawdbot本地化AI助手部署与配置指南

Clawdbot本地化AI助手部署与配置指南

1. Clawdbot项目概述Clawdbot是一款基于Openclaw框架开发的AI助手工具,主要用于自动化任务处理和智能交互。作为一款新兴的AI工具,它支持本地化部署和云端运行两种模式,能够根据用户需求进行灵活配置。从技术架构来看,Clawdbot采用…

2026/10/18 3:03:58 阅读更多 →

最新新闻

轻量级公式识别模型UniRec-0.1B:架构、9倍速推理与部署实战

轻量级公式识别模型UniRec-0.1B:架构、9倍速推理与部署实战

公式识别一直是文档数字化里最让人头疼的一环。你平时看论文、转电子教案、整理试卷,文字部分OCR都已经做得挺成熟,但一旦碰到积分公式、矩阵、分段函数,传统引擎基本就废了。最近我刷到一个开源项目,标题写得很直白:轻…

2026/10/19 2:24:38 阅读更多 →
Spring Boot电商商城系统从设计到部署:订单、购物车与后台管理实战

Spring Boot电商商城系统从设计到部署:订单、购物车与后台管理实战

这次我们来看一个非常典型的开源方向:基于 Spring Boot 的线上购物平台的设计与实现。这类项目在 GitHub 上很多,做成毕设、课程设计、或者拿来作电商系统原型都很合适。它的价值不在于技术有多新,而在于把商城主链路完整跑通了:商…

2026/10/19 2:24:38 阅读更多 →
AI写代码的“技术债”陷阱:边界、幻觉与防债实操

AI写代码的“技术债”陷阱:边界、幻觉与防债实操

1. 先聊几句:AI写代码这件事,我为什么会越用越慌我在某公司做了快八年的技术负责人,从去年开始,研发团队基本把AI编程助手当成了默认工具。新功能先让AI写一版,人再改,这个流程已经在好几个项目组里跑成了&…

2026/10/19 2:24:38 阅读更多 →
改进卷积模型的人脸性别与情感分类实践与思考

改进卷积模型的人脸性别与情感分类实践与思考

这题目一出,我当时的直观反应就是:又是一个把人脸识别和情感计算缝合起来的CNN改改进题。真正做进去之后才发现,题目里每一个词都不是白给的——"性别分类"和"情感分类"虽然都发生在同一张脸上,但它们在特征尺…

2026/10/19 2:24:38 阅读更多 →
影子模式实战:用真实流量安全验证数据库变更与全链路压测

影子模式实战:用真实流量安全验证数据库变更与全链路压测

如果只用一个字来概括近两年分布式系统改造里最值得关注的工程思路,我会选“影”字。它不是指某个具体框架,而是一类技术的统称:影子表、影子库、影子流量、Shadow Mode。今天这篇文章,我想把“影”这个字背后真正有价值的东西讲透…

2026/10/19 2:24:38 阅读更多 →
人形机器人产业链白皮书:制造业先行,算法决胜

人形机器人产业链白皮书:制造业先行,算法决胜

简介:2024人形机器人产业链白皮书是一份面向机器人领域研究者、产品经理、投资机构从业者的行业深度资料,内容系统覆盖宏观环境分析、产业链拆解、主流生产企业扫描、技术路线对比与市场投资建议等模块,能够帮助读者快速建立对人形机器人产业…

2026/10/19 2:23:38 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →