浪潮行舟 2023-08-17 13:53 采纳率: 50%
浏览 34

使用openlayer实现卫星图地图掩模效果

遇到问题及现象

使用openlayer实现地图掩模效果 类似高德上的区域掩模效果

我的效果

img

目标效果--高德上的区域掩模效果

img

相关代码

//海宁区域
_that.areaLayer = new VectorLayer({
          name: '海宁区域',
          source: new VectorSource({
            url: '/data/HainingArea.geojson',
            format: new GeoJSON()
          }),
          style: new Style({
            stroke: new Stroke({
              color: 'rgba(16, 66, 118, 0.6)', //'#1E71B8',
              width: 6
            }),
            fill: new Fill({
              color: 'rgba(50, 103, 174, 0.1)' // 'rgba(50, 103, 174, 0.1)' //'rgba(15, 62, 115, 0.1)'
            })
          })
        })

// 创建卫星图图层
        _that.satelliteLayer = new TileLayer({
          name: '海宁卫星区域',
          source: new XYZSource({
            url: 'https://server.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',            
            maxZoom: 19
          })
        })

// 创建地图视图
        const view = new View({
          center: fromLonLat(_that.Coordinates, 'EPSG:3857'),
          zoom: 11.4,
          zIndex: 8,
          maxZoom: 18,
          minZoom: 6,
          projection: 'EPSG:3857'
        })

window.map = new Map({
                target: 'map',
                layers: [
                  _that.satelliteLayer,
                  _that.areaLayer,
                  _that.waterLayer,
                  _that.riverLayer,
                  _that.riverBoundaryLayer
                ],
                view: view,
                extent: [120.30239196, 30.24771399, 120.87324612, 30.59070399], // 设置地图限制范围
                controls: defaultControls({
                  //加载控件到地图容器中
                  zoom: false,
                  rotate: false,
                  attribution: false
                })
              })
  • 写回答

1条回答 默认 最新

  • Camellia--GL 2023-08-17 14:47
    关注

    您可以使用OpenLayers来实现卫星图地图掩模效果。OpenLayers是一个开源的JavaScript库,用于在Web浏览器中显示和操作地图数据。
    要实现卫星图地图掩模效果,您可以使用OpenLayers提供的ol.layer.Tile类来创建一个瓦片图层,并将瓦片数据设置为卫星图。然后,可以使用ol.control.Vector类来创建一个矢量图层,并将矢量数据设置为地图掩模。最后,可以使用ol.style.Style类来定义矢量图层的样式,以便在地图上显示地图掩模。
    以下是一个简单的示例代码,用于在OpenLayers中实现卫星图地图掩模效果:

    // 创建一个瓦片图层,用于显示卫星图
    var satelliteTileLayer = new ol.layer.Tile({
      source: new ol.source.OSM(),
      name: 'Satellite'
    });
    
    // 创建一个矢量图层,用于显示地图掩模
    var vectorLayer = new ol.layer.Vector({
      source: new ol.source.Vector(),
      name: 'Mask'
    });
    
    // 创建一个样式,用于在地图上显示地图掩模
    var style = new ol.style.Style({
      fill: new ol.style.Fill({
        color: 'rgba(255, 255, 255, 0.2)'
      }),
      stroke: new ol.style.Stroke({
        color: '#ffcc33',
        width: 2
      })
    });
    
    // 将矢量图层的样式设置为地图掩模样式
    vectorLayer.setStyle(style);
    
    // 将瓦片图层和矢量图层添加到地图中
    map.addLayers([satelliteTileLayer, vectorLayer]);
    
    

    在上面的示例代码中,我们使用ol.source.OSM创建了一个瓦片图层,并使用ol.source.Vector创建了一个矢量图层。然后,我们使用ol.style.Style类定义了一个样式,用于在地图上显示地图掩模。最后,我们将矢量图层的样式设置为地图掩模样式,并将瓦片图层和矢量图层添加到地图中。
    使用OpenLayers实现卫星图地图掩模效果的具体步骤如下:

    创建一个瓦片图层,用于显示卫星图。
    创建一个矢量图层,用于显示地图掩模。
    使用ol.style.Style类定义一个样式,用于在地图上显示地图掩模。
    将矢量图层的样式设置为地图掩模样式。
    将瓦片图层和矢量图层添加到地图中。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月21日
  • 修改了问题 10月7日
  • 修改了问题 8月17日
  • 创建了问题 8月17日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么