天地图服务地址
瓦片地址如下(以矢量底圖為例):http://t0.tianditu.cn/DataServer?T=vec_c&X=210&Y=106&L=8
確定服務地址
天地圖共有 8 個服務地址,子域名分別從 t0 到 t7,如下列表所示。獲取的方法和上一篇中獲取百度地圖服務地址是一樣的,F12 查看了瀏覽器的通信信息:
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?
加載路網
我們查看一個路網切片的 url 地址: http://t4.tianditu.com/DataServer?T=vec_c&x=3233&y=673&l=12,一共有四個參數,T=vec_c表示請求的是路網數據,x 表示切片的 x 軸坐標,y 表示切片的y軸坐標,z表示切片所在的縮放級別。我們使用ol.source.XYZ加載切片,并將獲取的數據初始化一個切片圖層ol.layer.Tile:
var tian_di_tu_road_layer = new ol.layer.Tile({
title: "天地圖路網",
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有一個 url 參數,表示切片地址的模板:http://t4.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z},在使用 OpenLayers 時候,用戶的操作都會被轉化為相應的x、y、z值,并賦予地址模板,這樣就可以根據用戶的操作請求需要的切片了。
加載完成后,發現只有路網圖片,并沒有路段的名稱等注記層,我們并沒有做錯什么,只是天地圖是將路網圖層和注記圖層分開發布的,我們還要單獨請求注記圖層,然后疊加在路網上面,才會看到和百度地圖一樣的效果:
加載注記圖層
使用同樣的方法,加載注記圖層,可以看到其 url 參數中,只有 T 參數變化了,cva_w 表示請求的切片類型是注記圖層切片:
var tian_di_tu_annotation = new ol.layer.Tile({
title: "天地圖文字標注",
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);
通過加載路網和注記圖層后,我們就可以看到效果了:
我們可以想象,注記圖層應該是一個除了文字之外都是透明的 PNG 格式的圖片,接下來我們就來加載注記圖層:
加載衛星影像
天地圖除了路網數據和注記數據之外,還有衛星影像切片數據,所以我們可以使用同樣的方法加載衛星影像,同樣, url 參數中的 T參數值 img_w 表示請求的數據類型是衛星影像切片。代碼和效果圖如下:
var tian_di_tu_satellite_layer = new ol.layer.Tile({
title: "天地圖衛星影像",
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);
天地圖服務參數
要想成功訪問WMTS服務,需要為TiledWMTSLayer設置的參數有:WMTS服務地址(url)、要訪問的圖層名稱(layerName)、訪問方式(requestEncoding)和當前圖層(layerName)的具體信息參數。
如某一切片地址為:
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? 為圖層服務器地址
其他參數為:
GetCapabilities、Gettile
總結
- 上一篇: MFC略缩图控件实现
- 下一篇: 自绘列表框控件显示略缩图----再稍微改