mapbox点 线 面绘画工具添加

1.安装

npm install @mapbox/mapbox-gl-draw

2.引入

import mapboxgl from 'mapbox-gl';
import MapboxDraw from "@mapbox/mapbox-gl-draw";
import StaticMode from '@mapbox/mapbox-gl-draw-static-mode';

import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css'

const modes = MapboxDraw.modes;
modes.static = StaticMode;
<script src='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.3.0/mapbox-gl-draw.js'></script>

<link rel='stylesheet' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.3.0/mapbox-gl-draw.css' type='text/css' />

3.使用

<template>
	<div class="panel-map">
        <span class="title">停车场面域绘制</span>
        <div
            class="masking"
            v-loading="mapRendering"
            element-loading-text="地图渲染中"
        />
        <base-map
            ref="map"
            :option="mapOption"
            @mapReady="addControl"
        >
        </base-map>
    </div>
</template>

<script>
    //底层地图
	import BaseMap from 'components/base-map-mapbox-ft';
    //引入
	import MapboxDraw from "@mapbox/mapbox-gl-draw";
	import StaticMode from '@mapbox/mapbox-gl-draw-static-mode';
	import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css';
	import Api from '../api';

	const modes = MapboxDraw.modes;
	modes.static = StaticMode;

	export default {
		components: {
			BaseMap
		},
		props: {
		},
		computed: {
		},
		data() {
			return {
                mapOption: {
					zoom: 15,
					center:['113.738','22.755']
				},
                mapRendering:false,
                //添加绘制左上角绘制工具
				draw: new MapboxDraw({
					displayControlsDefault: false,
					controls: {
						polygon: true,
						trash: true
					},
					modes: modes
				}),
				geojson: {
					features: [],
					type: "FeatureCollection"
				},
                //绘制类型分为添加面域add或者修改面域update
                type:'add',
			}
		},
		methods: {
            //添加绘制组件
			addControl() {
				const map = this.$refs.map.getMap();
				map.addControl(this.draw, 'top-left');

				map.on('draw.create', this.updateArea);
				map.on('draw.delete', this.updateArea);
				map.on('draw.update', this.updateArea);

				if ( this.actionType === 'update') {
					this.initMapAndForm(map);
				}
                //左上侧工具按钮鼠标移入提示文字
				const polygonButton = document.querySelector('.mapbox-gl-draw_polygon');
				polygonButton.setAttribute('title', '绘制面域');
				const trashButton = document.querySelector('.mapbox-gl-draw_trash');
				trashButton.setAttribute('title', '删除面域');
				//地图加载状态
				this.mapRendering = false;
			},
            //将修改之前的面域绘制在地图上
			initMapAndForm() {
                //editData存储的是编辑之前的数据
				if(!this.editData.geometry?.coordinates){
                    return
                }
                let arr = [];
                this.editData.geometry.coordinates[0].forEach(coor => {
                    let poi = [coor[0]*1, coor[1]*1];
					arr.push( poi );
                });
                this.geojson = {
					type: "FeatureCollection",
					features: [{
						type: "Feature",
						geometry: {
							type: "Polygon",
							coordinates: [arr]
						},
						properties: {
                            fname:this.editData.fname,
                        }
					}]
				};
				this.draw.add(this.geojson);
                map.flyTo({
                    center: [this.editData.longitude*1,this.editData.latitude*1],
                    padding: 100,
                    zoom:15,
                    speed: 2,
                    curve: 1,
                    easing(t) {
                        return t
                    }
                });
			},
			updateArea() {
                //geojson存储的就是绘制面域的数据
				this.geojson = this.draw.getAll();
			}
		}
	}
</script>

<style lang="less" scoped>
	.panel-map{
        padding: 0 20px;
        height: 180px;
        .title{
            display: inline-block;
            margin-bottom: 10px;
         }
    }
</style>

4.效果

新增效果 

编辑效果

 

### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况,可以从以下几个方面排查并解决问题: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可服务器的成功初始化。 #### 4. **权限问题** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值