Hkv. 2023-03-29 15:38 采纳率: 0%
浏览 10

mapbox已经进入测量距离的状态,此时该如何退出这个状态?

mapbox已经进入测量距离的状态,此时该如何退出这个状态?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-29 19:27
    关注
    • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:mapbox创建空白底图
    • 除此之外, 这篇博客: mapbox使用,包括绘制、加载、修改、删除点和面,显示弹框等中的 绘制图形 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 一、在index.html全局引入mapbox-gl-draw的js和css,参考上诉mapbox-gl的引用
      二、在初始化地图时初始化draw

      	draw = new MapboxDraw({
              displayControlsDefault: false,//是否显示默认的地图控件
      	    controls: {//显示的地图控件,自定义控件时不设置
      	        polygon: true,
      	        line_string:true,
      	        point:true,
      	        trash: true
      	    }
            });
            updateMapDraw(draw);//保存draw对象,方便在其他页面使用
      

      三、在mapjs中监听绘制状态

      map.addControl(draw, "top-left");   //控件显示位置
      map.on('draw.create', updateArea);
      map.on('draw.delete', updateArea);
      map.on('draw.update', updateArea);
      export function updateArea(e) {
          if (e.type === 'draw.create') {
          //图形绘制完成
          }else if(e.type === 'draw.update'){
          //修改绘制图形后
          }else if(e.type === 'draw.delete'){
          //删除绘制图形
          }
      

      实现效果:
      在这里插入图片描述

      自定义控件,删除controls,在相应页面定义按钮,实现绘制类型的切换

      <div class="map-btn">
           <el-button @click="changeDrawModel('draw_point')" class="audit-btn" size="mini">绘点</el-button>
           <el-button @click="changeDrawModel('draw_polygon')" class="audit-btn" size="mini">绘面</el-button>
      </div>
      
      /**
       * 改变绘制类型
       */
      export function changeDrawModel(type) {
          draw.changeMode(type);
      }
      

      自定义绘制时显示的点图标或图形样式
      在初始化draw时,修改style

      	  map.loadImage("/img/marker.png", function (error, image) {
              if (error) throw error;
              map.addImage("pointImg", image);
            });
            draw = new MapboxDraw({
              displayControlsDefault: false,
              styles: [
                //绘制点图标
                {
                  'id': 'points-are-blue',
                  'type': 'symbol',
                  'filter': ['all',
                    ['==', '$type', 'Point'],
                    ['==', 'meta', 'feature'],
                    ['==', 'active', 'false']],
                  'layout': {//设置绘制后显示的点图标
                    "icon-image": "pointImg",
                    "icon-size": 1,
                    "icon-offset": [0, -15],
                    "icon-ignore-placement": true, //图标忽略位置
                  },
                  'paint' : {
                    "text-color": "#fff",
                  }
                },
                {
                  'id': 'highlight-active-points',
                  'type': 'symbol',
                  'filter': ['all',
                    ['==', '$type', 'Point'],
                    ['==', 'meta', 'feature'],
                    ['==', 'active', 'true']],
                  'layout': {//设置点激活状态下显示的图标
                    "icon-image": "pointImg",
                    "icon-size": 1,
                    "icon-offset": [0, -15],
                    "icon-ignore-placement": true, //图标忽略位置
                  },
                  'paint' : {
                    "text-color": "#fff",
                  }
                },
                // 设置面样式
                {
                  "id": "gl-draw-polygon-fill",
                  "type": "fill",
                  "filter": ["all",
                    ["==", "$type", "Polygon"],
                    ["!=", "mode", "static"]],
                  "paint": {//设置绘制面时显示的填充颜色及透明度
                    "fill-color": "#D20C0C",
                    "fill-outline-color": "#D20C0C",
                    "fill-opacity": 0.1
                  }
                },
                {
                  "id": "gl-draw-polygon-stroke-active",
                  "type": "line",
                  "filter": ["all", ["==", "$type", "Polygon"], ["!=", "mode", "static"]],
                  "layout": {
                    "line-cap": "round",
                    "line-join": "round"
                  },
                  "paint": {//设置绘制面时显示的描边颜色、线条类型、宽度
                    "line-color": "#fbb03b",
                    "line-dasharray": [0.2, 2],
                    "line-width": 2
                  }
                },
                {
                  "id": "gl-draw-polygon-and-line-vertex-halo-active",
                  "type": "circle",
                  "filter": ["all", ["==", "meta", "vertex"], ["==", "$type", "Point"], ["!=", "mode", "static"]],
                  "paint": {//设置绘制面时显示的转折点的大小,边框颜色
                    "circle-radius": 5,
                    "circle-color": "#fff"
                  }
                },
                {
                  "id": "gl-draw-polygon-and-line-vertex-active",
                  "type": "circle",
                  "filter": ["all", ["==", "meta", "vertex"], ["==", "$type", "Point"], ["!=", "mode", "static"]],
                  "paint": {//设置绘制面时显示的转折点的大小,填充颜色
                    "circle-radius": 3,
                    "circle-color": "#705080",
                  }
                }
              ]
            });
      

      实现效果
      在这里插入图片描述

      在这里插入图片描述

      Mapbox常用表达式:
      https://blog.csdn.net/hequhecong10857/article/details/115425431
      draw常用方法:
      https://blog.csdn.net/u011435933/article/details/104778290

    评论

报告相同问题?

问题事件

  • 创建了问题 3月29日

悬赏问题

  • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
  • ¥15 有关“完美的代价”问题的代码漏洞
  • ¥15 请帮我看一下这个简易化学配平器的逻辑有什么问题吗?
  • ¥15 暴力法无法解出,可能要使用dp和数学知识
  • ¥15 wpf通过绑定控件自身的值,来实现背景颜色的切换
  • ¥15 CDH6.3 运行hive -e hive -e "show databases;"报错:hive-env.sh:行24: hbase-common.jar: 权限不够
  • ¥15 SSRS制作的报表打开报错,无法正常显示网页
  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 javaweb项目无法正常跳转