openlayers点图元渲染及画圆

下面是openlayers点图元渲染效果图及在4326坐标系中画圆效果图。
26
因为功能需要所以写的可能有点麻烦,只截取了方法实现的代码。

 // 渲染点图标及画圆
  renderIcon(rows) {
  	let rows = {};
    rows.centerPoint = "116.64560693, 40.05946214";
    let self = this;
    self.vectorSource = new VectorSource(); // 图元数据源

    self.showCircle('文本内容', rows.centerPoint, 1500); //文本内容   中心点坐标  半径

    self.vectorLayer = new VectorLayer({
      source: self.vectorSource
    });
    self.map.addLayer(self.vectorLayer);  // 将矢量图层添加到地图图层中
  }

  // 点图元及覆盖面
  showCircle(name, center, radius) {
    let personnelImg = require("../assets/icons/pannel.png");  // 引用图片
    let centerPoint = this.transPoint(center);
    // 渲染点
    let personnelLocal = new Feature({
      geometry: new Point(centerPoint),
    });
    personnelLocal.setStyle(new Style({  // 设置样式
      image: new Icon({  // 图标
        src: personnelImg,
        // scale:0.3,  //图标大小
      }),
      text: new Text({
        text: name,  // 文本内容
        font:'bold 16px serif',  // 加粗 字体大小 字体样式
        // offsetX:12,
        offsetY: 15,  // y轴偏移
        fill: new Fill({  // 字体颜色
          color: '#FF6238'
        })
      })
    }));
    this.vectorSource.addFeature(personnelLocal);  // 添加点图元

    radius = parseFloat(radius);
    //这里是在4326坐标系上画圆,需要进行转换
    let circleIn3857 = new Circle(transform(centerPoint, 'EPSG:4326', 'EPSG:3857'), radius);
    let circleIn4326 = circleIn3857.transform('EPSG:3857', 'EPSG:4326');

    let circleFeature = new Feature({  //添加面
      geometry: circleIn4326,
    });
    circleFeature.setStyle(new Style({  // 设置样式
      fill: new Fill({
        color: 'rgba(211, 223, 235, 0.5)'
      }),
      stroke: new Stroke({
        color: '#1D70FF'
      })
    }));
    this.vectorSource.addFeature(circleFeature);  // 添加面图元
  }

  // 字符串经纬度转换为数组形式
  transPoint(point) {
    let item = point.split(',')
    item = [parseFloat(item[0]), parseFloat(item[1])]
    return item;
  }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值