天地图服务地址
瓦片地址如下(以矢量底圖為例):http://t0.tianditu.cn/DataServer?T=vec_c&X=210&Y=106&L=8
確定服務(wù)地址
天地圖共有 8 個(gè)服務(wù)地址,子域名分別從 t0 到 t7,如下列表所示。獲取的方法和上一篇中獲取百度地圖服務(wù)地址是一樣的,F(xiàn)12 查看了瀏覽器的通信信息:
http://t0.tianditu.com/DataServer?
http://t1.tianditu.com/DataServer?
http://t2.tianditu.com/DataServer?
http://t3.tianditu.com/DataServer?
http://t4.tianditu.com/DataServer?
http://t5.tianditu.com/DataServer?
http://t6.tianditu.com/DataServer?
http://t7.tianditu.com/DataServer?
加載路網(wǎng)
我們查看一個(gè)路網(wǎng)切片的 url 地址: http://t4.tianditu.com/DataServer?T=vec_c&x=3233&y=673&l=12,一共有四個(gè)參數(shù),T=vec_c表示請(qǐng)求的是路網(wǎng)數(shù)據(jù),x 表示切片的 x 軸坐標(biāo),y 表示切片的y軸坐標(biāo),z表示切片所在的縮放級(jí)別。我們使用ol.source.XYZ加載切片,并將獲取的數(shù)據(jù)初始化一個(gè)切片圖層ol.layer.Tile:
var tian_di_tu_road_layer = new ol.layer.Tile({
title: "天地圖路網(wǎng)",
source: new ol.source.XYZ({
url: "http://t4.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}"
})
});
map.addLayer(tian_di_tu_road_layer);
我們可以看到ol.source.XYZ有一個(gè) url 參數(shù),表示切片地址的模板:http://t4.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z},在使用 OpenLayers 時(shí)候,用戶的操作都會(huì)被轉(zhuǎn)化為相應(yīng)的x、y、z值,并賦予地址模板,這樣就可以根據(jù)用戶的操作請(qǐng)求需要的切片了。
加載完成后,發(fā)現(xiàn)只有路網(wǎng)圖片,并沒(méi)有路段的名稱等注記層,我們并沒(méi)有做錯(cuò)什么,只是天地圖是將路網(wǎng)圖層和注記圖層分開發(fā)布的,我們還要單獨(dú)請(qǐng)求注記圖層,然后疊加在路網(wǎng)上面,才會(huì)看到和百度地圖一樣的效果:
加載注記圖層
使用同樣的方法,加載注記圖層,可以看到其 url 參數(shù)中,只有 T 參數(shù)變化了,cva_w 表示請(qǐng)求的切片類型是注記圖層切片:
var tian_di_tu_annotation = new ol.layer.Tile({
title: "天地圖文字標(biāo)注",
source: new ol.source.XYZ({
url: 'http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}'
})
});
map.addLayer(tian_di_tu_annotation);
通過(guò)加載路網(wǎng)和注記圖層后,我們就可以看到效果了:
我們可以想象,注記圖層應(yīng)該是一個(gè)除了文字之外都是透明的 PNG 格式的圖片,接下來(lái)我們就來(lái)加載注記圖層:
加載衛(wèi)星影像
天地圖除了路網(wǎng)數(shù)據(jù)和注記數(shù)據(jù)之外,還有衛(wèi)星影像切片數(shù)據(jù),所以我們可以使用同樣的方法加載衛(wèi)星影像,同樣, url 參數(shù)中的 T參數(shù)值 img_w 表示請(qǐng)求的數(shù)據(jù)類型是衛(wèi)星影像切片。代碼和效果圖如下:
var tian_di_tu_satellite_layer = new ol.layer.Tile({
title: "天地圖衛(wèi)星影像",
source: new ol.source.XYZ({
url: 'http://t3.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}'
})
});
map.addLayer(tian_di_tu_satellite_layer);
天地圖服務(wù)參數(shù)
要想成功訪問(wèn)WMTS服務(wù),需要為TiledWMTSLayer設(shè)置的參數(shù)有:WMTS服務(wù)地址(url)、要訪問(wèn)的圖層名稱(layerName)、訪問(wèn)方式(requestEncoding)和當(dāng)前圖層(layerName)的具體信息參數(shù)。
如某一切片地址為:
http://t0.tianditu.com/vec_c/wmts?service=wmts&request=gettile&version=1.0.0&layer=vec&STYLE=default&tilematrixset=c&tilematrix=3&tilerow=2&tilecol=4&format=tiles
其中http://t0.tianditu.com/vec_c/wmts? 為圖層服務(wù)器地址
其他參數(shù)為:
GetCapabilities、Gettile
總結(jié)
- 上一篇: MFC略缩图控件实现
- 下一篇: Ubuntu使用PPA源安装及相关概念的