項目從http升級到https,出了不少奇怪的小問題,天地圖請求就是其中之一旁瘫。
https項目是不能完成http請求的谴蔑。
請求天地圖服務(wù)有兩方面:
arcgis
arcgis在構(gòu)造WebTileLayer時會指定url,這里之前加載矢量底圖是用的https://{subDomain}.tianditu.gov.cn/vec_c/wmts
埋合,但是后來有切換矢量和影像的需求,所以加了影像的請求——http://{subDomain}.tianditu.com/DataServer?T=img_c
,因為不是一個人寫的蔓腐,所以地址不太對,改成https://{subDomain}.tianditu.gov.cn/DataServer?T=img_c
就好了龄句。
leaflet
leaflet也有直接請求url的寫法回论,不過項目里用的是leaflet插件——chinatmsproviders,調(diào)用的方法是L.tileLayer.chinaProvider分歇,這個請求失敗的狀態(tài)碼為
301 Moved Permanently
查了一下沒得到有用的解決方法傀蓉,chinaProvider的源碼也沒帶協(xié)議類型,應(yīng)該是有自動判斷的處理职抡;最后對比請求地址發(fā)現(xiàn)葬燎,域名后綴不同,換了之后就好使了
(地形的因為沒用到,所以沒改)
在瀏覽器中輸入請求url發(fā)現(xiàn):
- .com的請求最終都會轉(zhuǎn)成http協(xié)議萨蚕;復(fù)制https的url跳轉(zhuǎn)后靶草,再復(fù)制新地址,得到的是http請求
- .gov.cn的請求不會變岳遥;跳轉(zhuǎn)前和跳轉(zhuǎn)后的地址是一致的
天地圖官網(wǎng)地址是https://www.tianditu.gov.cn/
奕翔,請求http://www.tianditu.com/
會跳轉(zhuǎn)到官網(wǎng)地址。所以應(yīng)該是.com是老版地址浩蓉,chinatmsproviders插件的版本比較老派继,請求的也是老版的天地圖服務(wù)地址。
2021-5-13更新
超圖
一般情況下捻艳,超圖加載天地圖是構(gòu)造Cesium.TiandituImageryProvider實例實現(xiàn)的驾窟,但是這個類的請求方法里沒有對location的協(xié)議進行判斷,也就造成只會發(fā)出http請求认轨,且無法通過改源碼實現(xiàn)绅络。
替代方法是使用Cesium.UrlTemplateImageryProvider類,這個類是自定義url請求嘁字,有較高的自由度恩急,也意味著較多的代碼。另外纪蜒,這個類的配置有些需要注意的:
- keywords
url template keywords衷恭,每種地圖引擎設(shè)置的都不一樣,超圖的與L.tileLayer.chinaProvider比較類似纯续,具體可以參考API文檔 - subdomains
默認是'abc'随珠,天地圖是從't0'到't7'的數(shù)組。