iClient for Openlayer 实现地图直接叠加图片

作者:lly

背景

最近有小伙伴需要直接在前端对接处理好的图片,并且要求位置正确,对于这种不常见的情况,我们使用Image图层来实现,并分享给大家。

一、实现思路

查看官网api,发现ImageStatic可以指定图片在地图中的范围
在这里插入图片描述
指定图片范围

let extent=[113.75,22.44,114.62,22.864];

构建一个新的source,设置好projection,并将设定的范围设置到图层中

 let imgl=new ol.layer.Image({
      opacity:0.6,
      source:new ol.source.ImageStatic({
         url:"../img/six.png",
         projection:'EPSG:4326',
         imageExtent:extent,  
     }) 
 });

最后再将图层添加到地图进行展示

   map.addLayer(imgl);
   map.getView().setCenter([113.75,22.44])

二、结果展示

在这里插入图片描述
完整代码如下:

<!--********************************************************************
* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
*********************************************************************-->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title data-i18n="resources.title_tiledMapLayer4326"></title>
    <script type="text/javascript" src="../js/include-web.js"></script>
    <script type="text/javascript" src="../../dist/ol/include-ol.js"></script>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%; position: absolute;top: 0;">
<div id="map" style="width: 100%;height:100%"></div>
<script type="text/javascript">
    var map, url = (window.isLocal ? window.server : "https://iserver.supermap.io")+"/iserver/services/map-world/rest/maps/World";
    map = new ol.Map({
        target: 'map',
        controls: ol.control.defaults({attributionOptions: {collapsed: false}})
            .extend([new ol.supermap.control.Logo()]),
        view: new ol.View({
            center: [0, 0],
            zoom: 8,
            projection: 'EPSG:4326',
            multiWorld: true
        })
    });
    var layer = new ol.layer.Tile({
        source: new ol.source.TileSuperMapRest({
            url: url,
            wrapX: true
        }),
        projection: 'EPSG:4326'
    });
    map.addLayer(layer);
 let extent=[113.75,22.44,114.62,22.864];
 let imgl=new ol.layer.Image({
      opacity:0.6,
      source:new ol.source.ImageStatic({
         url:"../img/six.png",
         projection:'EPSG:4326',
         imageExtent:extent,
        
     })
   
 });
  map.addLayer(imgl);
   map.getView().setCenter([113.75,22.44])
</script>
</body>
</html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值