react下penLayers点位标注和popup弹层和draw框选

本文介绍了在React环境中,使用OpenLayers库进行点位标注、popup弹层显示以及draw框选功能的实现。通过自定义popup弹层和处理地图移动事件,确保标注与弹层的对应。同时提到了地图的可拖动设置和相关地图事件的使用。

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

  • 环境
  • 1.react
  • 2.ol6.1.1
  • 3.代码块中的ol相关API组件需要自行导入
  • 标点的输出和样式
// 添加数据源
function mapAddPoint(obj) {
  let newPoint = new Feature({
    geometry: new Point(
      fromLonLat([Number(obj.longitude), Number(obj.latitude)])
    ),
    ...obj,
  });
  newPoint.setStyle(setMakerStyle);
  return newPoint;
}
// 设置标注样式
function setMakerStyle(feature) {
  return new Style({
    image: new Icon({
      anchor: [0.5, 1],
      //图标缩放比例
      scale: 0.2,
      //透明度
      opacity: 0.75,
      //图标的url
      src: markImg,//图标图片这里是预先导入了
    }),
    text: new Text({
      //位置
      textAlign: "center",
      //基准线
      textBaseline: "middle",
      offsetY: -10,
      //文字样式
      font: "normal 14px 微软雅黑",
      //文本内容
      //text: feature.get("title") + '\n' + feature.get("time") || "",
      //文本填充样式(即文字颜色)
      fill: new Fill({ color: "#aa3300" }),
      stroke: new Stroke({ color: "#ffcc33", width: 2 }),
    }),
  });
}
  • 标注绘制
    由上面的mapAddPoint函数生成标注元素,放到指定图层上
//重置标注图层
 resetMapPoint() {
    let { map } = this.refs.map;
    if (this.state.vectorLayer) {
      map.removeLayer(this.state.vectorLayer);//删除已存在的图层
    }
    this.initMapPoint(this.state.device_tree.dev
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值