首页 > 其他分享 >如何在mapbox中将标注添加到面

如何在mapbox中将标注添加到面

时间:2023-11-15 14:34:44浏览次数:33  
标签:map false geojson 到面 source mapbox hoveredPolygonId id 标注

const testGeoJOSN = () => {
    // 加载 GeoJSON 数据
    map.addSource("geojson", {
      type: "geojson",
      data: china,
      generateId: true,
    });

    map.addLayer({
      id: "china",
      type: "fill",
      source: "geojson",
      paint: {
        "fill-color": "#627BC1",
        "fill-opacity": [
          "case",
          ["boolean", ["feature-state", "hover"], false],
          1,
          0.5,
        ],
      },
    });
    map.addLayer({
      id: "china_symbol",
      type: "symbol",
      source: "geojson",
      paint: {
        "text-opacity": [
          "case",
          ["boolean", ["feature-state", "hover"], false],
          1,
          0,
        ],
      },
      layout: {
        "text-field": "{name}",
        "text-font": ["Open Sans Semibold"],
        "text-anchor": "center",
        // "text-offset": [0, 0.6],
        // "icon-image": "monument-15",
        // "icon-anchor": "center",
        // "icon-allow-overlap": true,
        // "icon-keep-upright": false,
        "symbol-placement": "point",
      },
    });
    map.on("mousemove", "china", (e) => {
      if (e.features.length > 0) {
        if (hoveredPolygonId !== null) {
          map.setFeatureState(
            { source: "geojson", id: hoveredPolygonId },
            { hover: false }
          );
        }
        hoveredPolygonId = e.features[0].id;
        map.setFeatureState(
          { source: "geojson", id: hoveredPolygonId },
          { hover: true }
        );
      }
    });

    map.on("mouseleave", "china", () => {
      if (hoveredPolygonId !== null) {
        map.setFeatureState(
          { source: "geojson", id: hoveredPolygonId },
          { hover: false }
        );
      }
      hoveredPolygonId = null;
    });
};

其实就是用同一个source添加一个点图层标注,但是这个标注有一个问题就是,一个面可能会有多个标注存在,如图所示

如何在mapbox中将标注添加到面_ico



标签:map,false,geojson,到面,source,mapbox,hoveredPolygonId,id,标注
From: https://blog.51cto.com/echohye/8390763

相关文章

  • 【工具包使用】解析txt标注文件
    前言 codeimportosdefparse_onedata(data):print('data:',data)info=data['info']image=data['image']valid=data['valid']rotation=data['rotation']categories=data[&#......
  • 聊城商标注册为什么要多类全类保护
    聊城商标注册为什么要多类全类保护恒标知产刘经理一、为什么要全类多类注册保护?商标全类保护是指申请人在办理商标注册时指定所有类别的商品及服务,使其商标在全部类别受到保护。有人认为在商标还不知名的情况下没有必要申请全类注册。但是,事前防御总比事后救济要好。商标是一种无形......
  • 如何在PS(photoshop)和AI(illustrator)里快速标注设计图尺寸?
    尺寸标注是大多数设计师必不可少的细节工作,特别是在一些特定的设计图中,标注至关重要。大部分设计大大都直接用CAD标注,其实只需要借助一些小插件,PS和AI也是完全可以直接搞定常见的尺寸标注的。PS-Specs一键尺寸标注 这是一款超级强大的《PS一键尺寸标注工具》,不管是平面图,还......
  • 041-第三代软件开发-QCustcomPlot波形标注
    第三代软件开发-QCustcomPlot波形标注文章目录第三代软件开发-QCustcomPlot波形标注项目介绍QCustcomPlot波形标注效果初始化绘制关键字:Qt、Qml、关键字3、关键字4、关键字5项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-ObjectLanguage)和C++的强大......
  • 9.6基线、连续、快速标注
    ·基线标注DIMBASELINE(命令)缩写db要先标一个dim才能用基线标注从上一个标注或选定标注的基线处创建线性标注、角度标注或坐标标注。可以通过标注样式管理器、“直线”选项卡和“基线间距”(DIMDLI系统变量)设定基线标注之间的默认间距。·连续标注DIMCONTINUE(命令)创建从上......
  • Spring Boot - @Transactional 标注的方法如何使用 synchronized?
    这篇文章中有说到@Transactional标注的方法也有锁的情况下会出现一些问题,具体请看SpringBoot锁。而且Idea也会标一个黄色波浪线提示你。我是这样做的,仅供参考。file:[DiscussionService.java]@ServicepublicclassDiscussionServiceimplementsIDiscussionService{......
  • 基于深度学习的自动驾驶汽车语义分割与场景标注算法研究。
    自动驾驶汽车是当前研究的热点领域之一,其中基于深度学习的语义分割与场景标注算法在自动驾驶汽车的视觉感知中具有重要作用。本文将围绕自动驾驶汽车的语义分割与场景标注算法展开研究。一、研究背景随着人工智能技术的不断发展,自动驾驶汽车逐渐成为汽车产业的重要发展方向。在......
  • VTK 标注类Widget 文字标注 vtkCaptionWidget
    目录Part1:简介Part2:效果 Part3:examplePart1:简介vtkCaptionWidget:用一个带线框及箭头的文本信息来标注某一对象;在可视化程序中,经常会对某个对象做一些标注说明;如,在医学图像诊断中,常常会手动标注出被诊断为肿瘤的区域或者其他病变区域,并用文字进行标注。Part2:效果vtkCapt......
  • 记录--vue3 + mark.js | 实现文字标注功能
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助页面效果具体实现新增1、监听鼠标抬起事件,通过window.getSelection()方法获取鼠标用户选择的文本范围或光标的当前位置。2、通过选中的文字长度是否大于0或window.getSelection().isCollapsed(返回一个布......
  • 图形类——剪图+贴图+马赛克+箭头+标注+取色
    1.Snipaste是一个简单但强大的贴图工具,同时也可以执行截屏、标注等功能。 Snipaste-截图+贴图 ......