用openlayer加载arcgis发布的wmts图层

本文详细介绍如何使用OpenLayers 2.0和3.0加载WMTS地图服务,并针对CGCS2000坐标系(EPSG:4490)进行Proj4JS配置,包括定义投影、设置分辨率及实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 通过wmts 确认发布的wmts是什么格式的。格分为wgs84用的是4326,cgc2000用的是4490,xian80用的是4610,下图是4326格式与其对应的分辨率,这块主要是openlayer2.0加载时,需要详细定义。3.0以上的,用proj4js去定义。

下面是4490格式与其对应分辨率

2。对于4490格式,需要在网页里加载proj4js文件:  <script type="text/javascript" src="../libs/proj4js/2.5.0/proj4.js"></script>

    下载proj4.js文件  https://www.bootcdn.cn/proj4js/

    查找坐标系定义  http://epsg.io/, 如查4490

3.   4490 projection定义:

openlayer2:   

 proj4.defs("EPSG:4490","+proj=longlat +ellps=GRS80 +no_defs"); 
 var projection = new OpenLayers.Projection('EPSG:4490');

openlayer 3:

    proj4.defs("EPSG:4490", "+proj=longlat +ellps=GRS80 +no_defs");
    var projection = new ol.proj.get('EPSG:4490');
    projection.setExtent([-180,-90,180,90]);

 

4. 代码实现,下面url中的{Style}与{TileMatrixSet}要被替换
openlayer2中用OpenLayers.Layer.XYZ,建图层:

url = "http://wmtsnetwf.com/services/QQ/WMTS/tile/1.0.0/CQMap_IMG/{Style}/{TileMatrixSet}/${z}/${y}/${z}";

var wmtsXYZ2 = new OpenLayers.Layer.XYZ(
         "wmts",
         url,
         {
        sphericalMercator: false,
        isBaseLayer: false,
        serverResolutions:titleresolutions4490
    });      

openlayer3中或ol.source.XYZ与ol.layer.Tile,建图层:

url = "http://wmtsnetwf.com/services/QQ/WMTS/tile/1.0.0/CQMap_IMG/{Style}/{TileMatrixSet}/{z}/{y}/{z}";

var wmtsSouceXYZ = new ol.source.XYZ({
        attributions: "wmts",
        maxZoom: 18,
        projection: projection,
        tileSize: [256, 256],
        tileUrlFunction: function (tileCoord) {

         var z = tileCoord[0]-1,  x =tileCoord[1], y = -tileCoord[2]-1; //4490
          return url.replace('{z}', (z).toString())
                            .replace('{x}', (x).toString())
                            .replace('{y}', (y).toString());
        }

      })

      var wmtsLayer = new ol.layer.Tile({
        opacity: 0.7,
        source:wmtsSouceXYZ
      });

以下是一个简单的例子,展示如何使用OpenLayers加载WMTS服务: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>OpenLayers WMTS Example</title> <link rel="stylesheet" href="https://openlayers.org/en/latest/css/ol.css" type="text/css"> <script src="https://openlayers.org/en/latest/build/ol.js"></script> </head> <body> <div id="map" class="map"></div> <script type="text/javascript"> var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }), new ol.layer.Tile({ source: new ol.source.WMTS({ url: 'https://sampleserver6.arcgisonline.com/arcgis/rest/services/WorldTimeZones/MapServer/WMTS', layer: 'WorldTimeZones', matrixSet: 'GoogleMapsCompatible', format: 'image/png', projection: 'EPSG:3857', tileGrid: new ol.tilegrid.WMTS({ origin: ol.extent.getTopLeft(ol.proj.transform([-180, 90], 'EPSG:4326', 'EPSG:3857')), resolutions: [ 156543.0339280410, 78271.51696402048, 39135.75848201023, 19567.87924100512, 9783.93962050256, 4891.96981025128, 2445.98490512564, 1222.99245256282, 611.49622628141, 305.7481131407048, 152.8740565703525, 76.43702828517624, 38.21851414258813, 19.10925707129406, 9.554628535647032, 4.777314267823516, 2.388657133911758, 1.194328566955879, 0.5971642834779395, 0.2985821417389697, 0.1492910708694849, 0.0746455354347424 ], matrixIds: [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21' ] }) }) }) ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), zoom: 2 }) }); </script> </body> </html> ``` 在这个例子中,我们首先创建了一个OpenLayers地图对象。我们添加了两个图层。第一个图层是使用OpenStreetMap数据源的瓦片图层。第二个图层是使用WMTS数据源的瓦片图层。 我们使用`ol.source.WMTS`类创建WMTS数据源。我们指定了WMTS服务的URL,图层名称,矩阵集,格式和投影。我们还指定了一个自定义瓦片网格,其中包含瓦片的分辨率和矩阵ID。 最后,我们在地图视图中设置了中心点和缩放级别。我们使用`ol.proj.fromLonLat`函数将经纬度坐标转换为Web Mercator投影坐标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

diaya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值