要使用 OpenLayers 3 加载天地图,首先要弄清楚天地图发布的原理,以及遵循的发布规范,上一篇中我们提到了使用 OpenLayers 3 加载百度地图,我们提到一般网络地图为了加快访问速度,都采用缓存切片地图的方式,天地图也不例外,而且原理极其类似,但是其切片的索引组织方式还是有一些不同,虽然都是切片,但是切片的起始坐标原点不一致,百度地图是屏幕的左下角,而天地图是屏幕的左上角(与谷歌地图一致),且所在的坐标系是球形墨卡托投影坐标系(EPSG:3857)。
针对这种形式发布的地图切片,OpenLayers 3 中有一个对应的数据源(ol.source)类 – ol.source.TileImage,上一篇的 OpenLayers 3 加载百度地图,就是使用的这个类。当然,我们使用这个类,加载天地图也是可以的,但是天地图的发布方式和切片组织方式与谷歌地图是一致的,在 OpenLayers 3 中有针对加载谷歌地图专门写好的类 - ol.source.XYZ,这个类是 ol.source.TileImage 的一个特例,继承了 ol.source.TileImage,其中 XYZ 分别对应切片所在的 x y 坐标和当前的缩放级别 z。
确定服务地址
天地图共有 8 个服务地址,子域名分别从 t0 到 t7,如下列表所示。获取的方法和上一篇中获取百度地图服务地址是一样的,F12 查看了浏览器的通信信息:
http://t0.tianditu.com/DataServer?
http://t1.tianditu.com/DataServer?
http://t2.tianditu.com/DataServer?