ol3加載arcserver rest服務(wù)

近日做完ol3加載arcserver rest服務(wù),做一個(gè)總結(jié),因?yàn)榘l(fā)現(xiàn)自己親手寫的ol3記載瓦片的小結(jié),竟然自己也會(huì)忘記,還好留下了博客,好記憶不如爛筆頭。同時(shí)此文也是為了完成對(duì)扯淡大叔的承諾,答應(yīng)幫大叔寫幾篇ol3的教程,一直拖著,萬(wàn)分抱歉。

1、加載第三方在線acrserver rest服務(wù)

參考代碼如下,可以直接訪問(wèn):

<script type="text/javascript">
    var projection = ol.proj.get('EPSG:4326');
    var tileUrl = "http://222.180.68.94:6080/arcgis/rest/services/wzpsp/wzmap/MapServer/tile/{z}/{y}/{x}";
    var origin = [-400.0, 399.9999999999998];
    var resolutions = [
        0.0013732916427489112,
        0.0006866458213744556,
        0.0003433229106872278,
        0.0001716614553436139,
        0.00008582953794130404,
        0.00004291595870115493,
        0.000021457979350577466,
        0.000010728989675288733,
        0.000005363305107141452,
        0.000002681652553570726,
        0.000001342016007288278,
    ];
    var fullExtent = [107.86896617100007, 30.390792641000075, 108.90726196600006, 31.005204326000076];
    var tileGrid = new ol.tilegrid.TileGrid({
        tileSize: 256,
        origin: origin,
        extent: fullExtent,
        resolutions: resolutions
    });
    var tileArcGISXYZ = new ol.source.XYZ({
        tileGrid: tileGrid,
        projection: projection,
        url: tileUrl ,
    });

    var map = new ol.Map({
        target: 'map',
        layers: [
            new ol.layer.Tile({
                source: tileArcGISXYZ
            }),               
        ],
        view: new ol.View({
            center: ol.extent.getCenter(fullExtent),
            resolutions: resolutions,
            projection: projection,
            extent: fullExtent
        })
    });
    map.getView().setZoom(0);
</script>

上面中的參數(shù)在arcserver rest 服務(wù)的頁(yè)面中找,resolutions參數(shù),tileSize參數(shù)如下:


Paste_Image.png

origin及地圖范圍:arcgis的origin原點(diǎn)在[-400,399,99999999999],范圍一般用initial extent:


Paste_Image.png

PS:在作者的幾次項(xiàng)目實(shí)踐中發(fā)現(xiàn),initial extent與full extent都有可能,可能和第三方發(fā)布的服務(wù)配置有關(guān),待進(jìn)一步確認(rèn)?

2、加載第三方arcserver rest服務(wù)的離線瓦片

也可以通過(guò)作者發(fā)布的瓦片下載工具(工具按照wmts規(guī)則存儲(chǔ)離線瓦片) ,下載第三方arcgis rest服務(wù)的瓦片到本地,用ol3加載離線瓦片。通過(guò)觀察arcgis rest發(fā)布的瓦片是WMTS規(guī)則,瓦片坐標(biāo)從左上角到右下角遞增,加載arcgis rest的離線瓦片參考如下,其余代碼及參數(shù)設(shè)置與上面所述一致:

 new ol.layer.Tile({
                    source: new ol.source.TileImage({
                        projection: projection,
                        tileGrid: tileGrid,
                        tileUrlFunction: function (tileCoord, pixelRatio, proj) {
                            var z = tileCoord[0];
                            var x = tileCoord[1];
                            var y = -tileCoord[2] - 1;
                            return "/testtiles/wz_tiles/"+z + "/" + y +"/" + x +".png";
                        }
                    }),
                })

3、加載arcserver rest的本地切片

加載arcserver的本地切片時(shí),其resolutions、origin、extent的設(shè)置與上面所述一致。arcserver切片如下圖,其本質(zhì)也是xyz排列存儲(chǔ):


arcserver切片

參考代碼如下:

   //本地瓦片
   tileUrlFunction: function (tileCoord, pixelRatio, proj) {      
          var x = 'C' + padLeft(tileCoord[1], 8, 16);
          var y = 'R' + padLeft(-tileCoord[2] - 1, 8, 16);
          var z = 'L' + padLeft(tileCoord[0], 2, 10);
         var url = 'localtiles/' + z + '/' + z + '/' + y + '/' + x + '.png';
         return url;
   }


      //將10進(jìn)制轉(zhuǎn)16進(jìn)制,余位補(bǔ)0,湊成ArcServer的切片格式
    function padLeft(val,num ,radix) {
        var str = val.toString(radix || 10);
        return (new Array(num).join('0') + str).slice(-num);
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,947評(píng)論 18 139
  • 一說(shuō)到REST,我想大家的第一反應(yīng)就是“啊,就是那種前后臺(tái)通信方式?!钡窃谝笤敿?xì)講述它所提出的各個(gè)約束,以及如...
    時(shí)待吾閱讀 3,467評(píng)論 0 19
  • 本文適用于對(duì)ol3的使用有一定了解,目的是為了對(duì)ol3瓦片加載部分有更深入的了解。ol3源碼極其龐大,本文僅僅只包...
    老羽閱讀 8,908評(píng)論 6 17
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,349評(píng)論 25 708
  • 離2018年還有69天,上次數(shù)日子的時(shí)候似乎是好久以前了,那時(shí)候就想著發(fā)力了,但沒(méi)發(fā)出來(lái)。今天算是一個(gè)新的開(kāi)始吧,...
    李大刀閱讀 581評(píng)論 0 50