ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

openlayer加载arcgis服务

2021-01-27 19:36:17  阅读:241  来源: 互联网

标签:ol openlayer url arcgis modifiedUrl params CustomImageArcGISRest import 加载


1、ArcGIS动态服务

import ImageLayer from 'ol/layer/Image';
import CustomImageArcGISRest from "./CustomImageArcGISRest";

function  createDynamicArcGISLayer  (url, zIndex, radio) {
  if (!radio) radio = 1.0;
  return new ImageLayer({
    source: new CustomImageArcGISRest({
      ratio: radio,
      url: url
    }),
    zIndex
  });
}
CustomImageArcGISRest.js内容(改写原来的ImageArcGISRest)
import ImageArcGISRest from 'ol/source/ImageArcGISRest'
import {appendParams} from "ol/uri";
import {assert} from "ol/asserts";


/**
 *
 * 兼容非标准URL形式的MapServer
 *
 *
 */
class CustomImageArcGISRest extends ImageArcGISRest {


  constructor(opt_options) {
    super(opt_options);
  }


  getRequestUrl_(extent, size, pixelRatio, projection, params) {
    // ArcGIS Server only wants the numeric portion of the projection ID.
    const srid = projection.getCode().split(':').pop();

    params['SIZE'] = size[0] + ',' + size[1];
    params['BBOX'] = extent.join(',');
    params['BBOXSR'] = srid;
    params['IMAGESR'] = srid;
    params['DPI'] = Math.round(90 * pixelRatio);

    const url = this.url_;


    let _modifiedUrl = url
      .replace(/MapServer\/?$/, 'MapServer/export')
      .replace(/ImageServer\/?$/, 'ImageServer/exportImage');

    if (_modifiedUrl == url) {
      _modifiedUrl = url.concat('/export');
    }

    const modifiedUrl = _modifiedUrl;

    if (modifiedUrl == url) {
      assert(false, 50); // `options.featureTypes` should be an Array
    }

    return appendParams(modifiedUrl, params);
  }

}


export default CustomImageArcGISRest;
2、ArcGIS切片服务

import XYZ from 'ol/source/XYZ'
import Tile from 'ol/layer/Tile'
import TileGrid from 'ol/tilegrid/TileGrid'

function createTiledArcGISLayer (url, zIndex, _EPSG) { let SRID = _EPSG || '4528'; return new Tile({ source: new XYZ({ url: `${url}/tile/{z}/{y}/{x}`, projection: get(`EPSG:${SRID}`), tileGrid: new TileGrid(window.applicationConfig.tileInfo), }), zIndex }); }

关于window.applicationConfig.tileInfo要看你的服务配置,例如

    tileInfo: {
      tileSize: 256,
      origin: [34876800, 10002100],
      extent: [40453740.474700004, 3442540.7754500005, 40557073.819, 3541460.3122000005],
      resolutions: [
        132.2919312505292,
        76.35146092731352,
        38.17573046365676,
        19.08786523182838,
        9.543932616046483,
        4.771966307890949,
        2.3859831539454746,
        1.1929915769727373,
        0.5964957886186606,
        0.14912394722081113
      ]
    },

 

 




标签:ol,openlayer,url,arcgis,modifiedUrl,params,CustomImageArcGISRest,import,加载
来源: https://www.cnblogs.com/yangzhengier/p/14336568.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有