問題:
openlayers3調用TileWMS接口,實現Openlayers加載Geoserver轉發的ArcGIS切片時,web墨卡托(wkid3857)沒有問題,但是WGS84(wkid4326)就不行。
問題排查:
1、查看控制台,發現報錯400,這個是由於格式錯誤引起的

2、於是我把鏈接復制出來粘貼到瀏覽器觀察,發現是BBOX的經緯度反了。
&BBOX=39.387925644409165%2C115.94328881619128%2C39.99706766190172%2C116.55243083368384
變成了BBOX=緯度&經度&緯度&經度了
3、我把BBOX修正,再放到瀏覽器打開,發現可以正常加載。看來問題找到了,就是構造的時候bbox的問題,可這是怎么造成的呢?
4、網上都沒找到原因,實在不行了決定咬咬牙跟源碼吧。
5、源碼跟到這里發現了問題:獲取坐標系的坐標軸順序,如果是"ne"就把bbox構造經緯度反一反。為啥呢?

6、原來openlayers在操作地圖時,如果用到坐標系的,則會根據坐標系先判斷一下坐標順序,WGS84默認順序是(緯度,經度,高度),web墨卡托默認是(x,y,z)

7、我們用的EPSG:4326的坐標系,順序是neu,源碼中被if條件捕獲,bbox被轉了
解決方案:
1、最終找到問題,就要把他消滅,我們用openlayers自定義坐標系的方法,重寫一下"EPSG:4326",將它的axisOrientation改為enu
var projection = new ol.proj.Projection({ code: 'EPSG:4326', axisOrientation: 'enu' });
2、至此將修改完的projection傳給ol.map.view,再加載,就可以了
map = new ol.Map({ target: "map", layers: [new ol.layer.Tile({ source: new ol.source.TileWMS({ url: "http://10.19.151.238:8080/geowebcache/service/wms", params: { 'LAYERS': 'beijing', format: 'image/png', SRS: 'EPSG:4326' }, tileGrid: tileGrid }) })], view: new ol.View({ center: [116.47202, 40.291], resolutions: resolutions, resolution: 0.00475892201166056, projection: projection, extent: fullExtent //zoom: 3 }) });
3、最后附上坐標系可能的軸順序:常用的有(enu,neu,wnu)

