基于cesium的百度、腾讯、高德数据访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于cesium的百度、腾讯、高德数据访问相关的知识,希望对你有一定的参考价值。

参考技术A

目前百度在网页版仍然使用地图瓦片,空间参考为webMecator,起始级别为3,范围为256*5,但其调整了投影参数,中央经线没在0度,因此第3级 实际有6个瓦片(最左、最右是同一个瓦片的两部分)。
请求格式为

目前经过简单计算推测其基于调整投影参数后 0级瓦片大小为 160x160 ,[0,2]级瓦片都不使用,三级进行瓦片大小调整。

矢量地图采用矢量瓦片形式进行存储,通过请求获取相应的矢量内容,在前端进行矢量栅格化绘制
但在与影像叠加时采用了后端获取png图片的方法

https://rt3.map.gtimg.com/tile?z=4&x=13&y=10&styleid=2&version=297 对应的图片内容为

通过试验获取同一水平行上的影像叠加文字图片

可以看到级别对应关系,qq使用了标准的web墨卡托投影,第4级为 16x16
对应其影像数据 4/10/13的卫星影像数据 https://p2.map.gtimg.com/sateTiles/4/0/0/13_10.jpg?version=229

使用 cesiumjs 进行验证,注意腾讯的行号方向是反的,需要使用 reverseY 替换

太平洋 这仨字太丑了。

腾讯同样不提供前三级的数据

影像的资源编码方式和叠加矢量层不同,如:

这是中国南海的一块瓦片,包括越南和海南岛。

使用上方矢量的请求串,获取一下矢量 https://rt3.map.gtimg.com/tile?z=5&x=25&y=17&styleid=2&version=297 也是对应的,那么问题就来了,前面多出来的两个数字是干什么的。
另取一块高级别影像 https://p3.map.gtimg.com/sateTiles/9/25/17/411_284.jpg?version=229

上面5级的也是如是计算,我们就知道相应的规则了。

level/sx/sy/x_y

下面就让球起飞吧。

腾讯数据在线示例

矢量地图采用矢量瓦片形式存储,且通过 websocket 进行数据传输。这类数据由于格式非公开,我们很难使用,就算将格式公开也需要大量额外工作才能将矢量描述转化为图片输出,因此我们跳过不处理。
我们还是看一下它的卫星图模式。
查看其中的一块海口市的图片 https://webst02.is.autonavi.com/appmaptile?style=6&x=3302&y=1815&z=12

可以看到其地址中使用的是标准的 x/y/z 指定的瓦片,参考上节,我们可以看到通过 UrlTemplateImageryProvider 可以直接访问它的数据。

可以看到南北极高德的数据比腾讯良心多了。

示完待续

Openlayers 高德腾讯、百度、天地图坐标相互转换

参考技术A

OpenLayers 教程

在地图开发过程中,坐标的转换是很常用的功能,国内的话一般 西安80(EPSG:4610) 北京54(EPSG:2433) 转WGS84比较多,不同坐标系转换,只要知道EPSG码,通过 Openlayers 的方法就可以转换。

但是,像国内商用的地图( 高德、腾讯、百度 ),要求数据加密,一般通过 GCJ-02 或者 BD-09 加密,不能简单通过 openlayers 的转换方法实现,需要手动使用算法完成转换。

本教程算法来自网络,目前提供点数据的转换,对于线和面推荐在数据库或者后端实现转换。

注意:本示例将 高德腾讯坐标设置为 黑色 ;将百度坐标设置为 黄色

注意:本示例将 高德腾讯坐标转为WGS84颜色设置为 粉色 ;将百度坐标转为WS84颜色设置为 绿色

Openlayers 高德腾讯、百度、天地图坐标相互转换:OpenLayers example

以上是关于基于cesium的百度、腾讯、高德数据访问的主要内容,如果未能解决你的问题,请参考以下文章

JS: 百度地图与腾讯/高德地图经纬度转换

Openlayers 高德腾讯、百度、天地图坐标相互转换

Cesium矢量地图插件发布新版本

Cesium专栏-百度地图加载(附源码下载)

高德地图,百度地图,腾讯地图哪个好?

Cesium加载在线地图服务