当前位置: 首页 > news >正文

做花语的网站如何成为游戏代理

做花语的网站,如何成为游戏代理,骨干校 建设网站,沈阳开发网站公司哪家好功能概述 本文介绍如何在Leaflet地图中实现要素高亮显示和交互式编辑功能,主要包括: 清除高亮要素同时高亮图形和点要素切换编辑模式相关UI组件实现核心代码实现 1. 清除高亮功能 const clearHighlights () > {const mapInstance map.value?.leafl…

功能概述

本文介绍如何在Leaflet地图中实现要素高亮显示和交互式编辑功能,主要包括:

  1. 清除高亮要素
  2. 同时高亮图形和点要素
  3. 切换编辑模式
  4. 相关UI组件实现
    在这里插入图片描述

核心代码实现

1. 清除高亮功能

const clearHighlights = () => {const mapInstance = map.value?.leafletObject;if (!mapInstance || !highlightState.value.layers) return;// 如果正在编辑,先退出编辑模式if (isEditing.value) {cancelEdit();return;}mapInstance.removeLayer(highlightState.value.layers);highlightState.value = {feature: null,points: null,layers: null};
};

2. 高亮图形和点要素

const highlightBoth = async (feature, points) => {const mapInstance = await map.value?.leafletObject;if (!mapInstance) return;// 清除之前的高亮clearHighlights();// 创建图层组存放所有高亮要素const highlightGroup = L.featureGroup();// 高亮多边形if (feature?.geometry?.type === 'Polygon') {const polygon = mapInstance.editTools.createPolygon(feature.geometry.coordinates[0].map(coord => [coord[1], coord[0]]),{ fillColor: '#00ffff',color: '#00ffff',fillOpacity: 0.2,weight: 5});highlightGroup.addLayer(polygon);}// 高亮点要素if (points?.length > 0) {points.forEach(point => {const marker = L.marker([point.geometry.coordinates[1], point.geometry.coordinates[0]], {icon: L.icon({iconUrl: flightIcon,iconSize: [20, 20],iconAnchor: [10, 10],iconRotate: point.properties.direction || 0}),zIndexOffset: 1000});highlightGroup.addLayer(marker);});}// 添加到地图highlightState.value.layers = highlightGroup;mapInstance.addLayer(highlightGroup);
};

3. 编辑模式切换

const toggleEditMode = async () => {const mapInstance = await map.value?.leafletObject;if (!mapInstance) return;if (isEditing.value) {cancelEdit();return;}// 检查是否有可编辑的图层if (!highlightState.value.layers?.getLayers().length) {ElMessage.warning('没有可编辑的图形');return;}isEditing.value = true;originalGeoJSON.value = JSON.parse(JSON.stringify(highlightState.value.feature));highlightState.value.layers.eachLayer(layer => {if (layer instanceof L.Polygon || layer instanceof L.Polyline) {layer.enableEdit();layer.on('edit', () => {console.log('图形被编辑', layer.toGeoJSON());});}});
};

UI组件实现

<div class="top-bar"><el-tooltip content="图形编辑" placement="left"><div class="icon-bar" @click.stop="toggleEditMode"><el-icon size="30" color="#939393"><Edit /></el-icon></div></el-tooltip>
</div><!-- 编辑状态提示 -->
<div v-if="isEditing" class="edit-status"><div class="edit-indicator">编辑模式</div><el-button type="success" @click="saveEdits">保存修改</el-button><el-button type="warning" @click="cancelEdit">取消编辑</el-button>
</div>

样式优化

/* 编辑状态提示 */
.edit-status {position: absolute;top: 65px;left: 50%;transform: translateX(-50%);z-index: 1000;background-color: rgba(255, 255, 255, 0.9);padding: 10px 20px;border-radius: 20px;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
}/* 顶点样式增强 */
:deep(.leaflet-vertex-icon) {width: 12px !important;height: 12px !important;background-color: #FF5722;border: 2px solid white;border-radius: 50%;
}

初始化注意事项

onMounted(async () => {const mapInstance = await map.value?.leafletObject;if (!mapInstance) return;// 初始化编辑选项mapInstance.editOptions = {polygon: {allowIntersection: false,  // 不允许自相交drawError: {color: '#FF0000',message: '不能创建自相交的多边形'}}};
});
http://www.dtcms.com/a/433801.html

相关文章:

  • 宁波网站建设论坛wordpress 电子书插件
  • 水墨风格网站源码建设网站的目标客户群
  • 网站策划的工作要求市场营销的概念
  • 沃然建站平台官网怎么做网站浏览量分析
  • 临海市城乡建设规划局网站找客户资源的网站
  • 就业网站建设给个2021站你们懂得不花钱的
  • 网站点赞怎么做的网站建设招标公示
  • 宝坻集团网站建设wordpress怎么设置网站描述
  • 网站建设 推神网络装修设计网站哪个平台最好
  • 四川建设厅官方网站证件查询设计网站的元素
  • 山西公司网站开发品牌建设再发力
  • 广州公司网站建设医药网站建设中图片
  • 建设部网站资质人员查询有网站制作app要多长时间
  • 个人电脑做网站主机qq网页版直接登录手机版
  • 织梦网站404怎么做如何加入网络营销公司
  • 个人网站需要备案吗孝昌网站建设
  • xiu主题做的网站易捷网站内容管理系统漏洞
  • 自己做项目的网站wordpress添加ppt
  • 国际网站怎么样做网站文件大小
  • 怎么更改网站备案信息吗贺岁币在建设银行那个网站预约
  • 宁波网站建设在线网站还没建设好可以备案吗
  • 医院网站建设存在问题歌曲做网站背景音乐 侵权
  • 常熟有哪些网站建设公司平面设计师招聘广告文案
  • 做网站公司 深圳信科公司网站建设价格多少
  • wordpress迁站网站能给企业带来什么
  • 小说网站如何做书源如何制作钓鱼网站
  • 温州市建设工程质量安全管理总站卓越亚马逊网站建设目的
  • 网站改版优化深圳住房和建设局网站轮候大厅
  • dw做的网站怎么去掉甘肃省临夏州建设局网站
  • 做外贸什么网站比较好南通专业网站建设