openlayer加载arcgis服务

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
      ]
    },



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue中加载ArcGIS地图服务,您需要使用OpenLayers库。以下是一些步骤: 1. 安装OpenLayers 您需要先安装OpenLayers库。您可以使用npm来安装它,命令如下: ``` npm install ol ``` 2. 导入OpenLayers 在Vue组件中,您需要导入OpenLayers库。您可以在组件的script部分添加以下代码: ``` import ol from 'ol' import Map from 'ol/Map' import View from 'ol/View' import TileLayer from 'ol/layer/Tile' import XYZ from 'ol/source/XYZ' ``` 3. 创建地图 在Vue组件的methods部分,您可以创建一个createMap函数,其中包含创建地图的代码。以下是一个示例代码: ``` createMap() { let map = new Map({ target: 'map', view: new View({ center: [0, 0], zoom: 2 }) }); let layer = new TileLayer({ source: new XYZ({ url: 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}' }) }); map.addLayer(layer); } ``` 在上面的代码中,我们首先创建一个地图对象,然后创建一个瓦片图层,并将其添加到地图对象中。在瓦片图层的source属性中,我们指定了ArcGIS地图服务URL。 4. 在模板中添加地图 在Vue组件的template部分,您可以添加一个div元素来显示地图。以下是一个示例代码: ``` <template> <div> <div id="map"></div> </div> </template> ``` 在上面的代码中,我们添加了一个id为“map”的div元素,它将用于显示地图。 5. 调用createMap函数 最后,在Vue组件的mounted部分,您可以调用createMap函数来创建地图。以下是一个示例代码: ``` mounted() { this.createMap(); } ``` 在上面的代码中,我们在组件挂载后调用createMap函数。 这就是在Vue中加载ArcGIS地图服务的基本步骤。您可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值