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

mapbox面图层标注

mapbox并没有一个属性类似于’text-field’的symbol图层的直接可以标注的办法,这里笔者提供两种其他的面图层标注的办法用来大家参考

效果图

在这里插入图片描述

方案一 把面图层当做点图层直接展示

在mapbox里面,面图层是可以直接渲染成线图层和点图层的,这里我们的图层标注就是直接将面图层渲染成点图层,一个souce,两个layer,渲染成一个面,在渲染成点,点会在每一个闭合的要素上都会有标注,这个方案就是快速简单,缺点就是有要素不规范的时候,存在一种情况,就是有好多个稀碎的面组成一个面,导致出现在一个面会出现很多个点标注,解决办法就是自己处理一下geojson文件,把那些稀碎的给它删了。

         map.addSource('county',{type:'geojson',data:'你的geojson文件'})let countyLayer = {id:'county',source:'county','type':'fill',maxzoom:8,paint: {// 'fill-opacity': 0.4,'fill-color':'blue',},layout: {visibility: 'visible'},}let countyNoteLayer = {id:'countyNote',source:'county','type':'symbol',maxzoom:8,paint: {'text-color':"#505050",'text-halo-color':"#ffffff","text-halo-blur": 1, 'text-halo-width':1,},layout: {visibility: 'visible','text-field': "{county}",'text-size':12,'text-font': [ 'Microsoft YaHei' ],'icon-allow-overlap' : true,'text-allow-overlap': true,'text-anchor': 'center'},}

方案二 把面geojson取每个要素的中心点改造为点geojson

这里我提供一个函数。这里使用了turf.center方法来取要素中心点,就是两个souce,两个layer,一个面souce来渲染面,把面的geojson封装成点的souce来渲染点用来标注

//把面取中心点封装成点数据
const changeFillToPoint = (fillGeojson)=>{let pointGeojson =  fillGeojson.features.map(function(feature) {let center = turf.center(feature);return {"type": "Feature",  "geometry": {  "type": "Point",  "coordinates": center.geometry.coordinates},  "properties": {...feature.properties// 可以包含原始面的属性,或者添加新的属性  }  }; })return pointGeojson
}
http://www.lryc.cn/news/304311.html

相关文章:

  • MySQL|MySQL基础(求知讲堂-学习笔记【详】)
  • 10.docker exec -it /bin/bash报错解决、sh与bash区别
  • 查询数据库的编码集Oracle,MySQL
  • 电商数据采集+跨境电商|API电商数据采集接口洞悉数字新零售发展
  • linux之用户和用户组
  • 人工智能深度学习
  • python reshape 和 transpose的区别
  • 音视频技术-网络视频会议“回声”的消除
  • 有哪些令人惊讶的心理学效应
  • 二叉树基础知识总结
  • IDEA2023.3.4开启SpringBoot项目的热部署【简单明了4步操作】
  • QT中调用python
  • Sora基础知识学习
  • 开源博客项目Blog .NET Core源码学习(9:Autofac使用浅析)
  • Go语言中的TLS加密:深入crypto/tls库的实战指南
  • 网络原理-TCP/IP(7)
  • HarmonyOS4.0系列——08、整合UI常用组件
  • 【Spring Boot 3】【JPA】一对多单向关联
  • 工信部等九部门:打造一批实现制造过程数字孪生的数字化转型标杆工厂
  • 并发编程(2)基础篇-管程
  • OpenAI文生视频大模型Sora概述
  • [linux]进程间通信(IPC)———共享内存(shm)(什么是共享内存,共享内存的原理图,共享内存的接口,使用演示)
  • Go 原子操作有哪些?
  • 爬虫知识--02
  • SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测
  • Observability:使用 OpenTelemetry 和 Elastic 监控 OpenAI API 和 GPT 模型
  • 靡语IT:Vue精讲(一)
  • vue3 toRefs之后的变量修改方法
  • 【教程】详解相机模型与坐标转换
  • 171基于matlab的随机共振微弱信号检测