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

【Mars3d】new mars3d.layer.GeoJsonLayer({不规则polygon加载label不在正中间的解决方案

问题:

1.new mars3d.layer.GeoJsonLayer({type: "polygon",在styleOptions里配置label的时候,发现这个

不规则polygon加载的时候,会出现label不在中心位置。

  graphicLayer = new mars3d.layer.GeoJsonLayer({

    name: "全国省界",

    url: "//data.mars3d.cn/file/geojson/areas/100000_full.json",

    format: simplifyGeoJSON, // 用于自定义处理geojson

    symbol: {

      type: "polylineP",

      styleOptions: {

        width: 2,

        materialType: mars3d.MaterialType.LineFlow,

        materialOptions: {

          color: "#00ffff",

          image: "img/textures/fence-line.png",

          speed: 10,

          repeat_x: 10

        },

        distanceDisplayCondition: true,

        distanceDisplayCondition_far: 12000000,

        distanceDisplayCondition_near: 100000,

        label: {

          text: "{name}",

          position: "{center}", // 省会位置center

          font_size: 30,

          color: "#ffffff",

          outline: true,

          outlineColor: "#000000",

          scaleByDistance: true,

          scaleByDistance_far: 60000000,

          scaleByDistance_farValue: 0.2,

          scaleByDistance_near: 1000000,

          scaleByDistance_nearValue: 1,

          distanceDisplayCondition: true,

          distanceDisplayCondition_far: 10000000,

          distanceDisplayCondition_near: 100000,

          setHeight: 10000

        }

      }

    },

    flyTo: true

  })

  map.addLayer(graphicLayer)

  label: {

          text: "{name}",

          position: "{center}", // 省会位置center

这个配置可以看到在不规则的时候,就无法显示在中心了,是因为sdk内部计算多个点的点位中心依靠的是数学的围合面的多个点的中心点坐标算法计算的。

相关链接:

PolyUtil - V3.6.18 - Mars3D API文档

翻看了mars3d.graphic.PolygonEntity.StyleOptions,面 支持的样式信息这个label的文字所在位置除了center还有其他的位置是可以额外支持的。

解决方案:

可以在我们的图形数据里面加properties,带着坐标点位,就类似我们自己维护的数据一样,加个参数是专门显示点位的。

真正在项目中遇到的不规则的面数据也没几个,可以一个个点一下,避免通过center获取中心点有时候会在图形之外的问题。

默认是中心点位,遇到一个不正确的就修改一个。

http://www.lryc.cn/news/274560.html

相关文章:

  • 怎么快速修复mfc140.dll文件?解决mfc140.dll缺失的方法
  • 安全防御之入侵检测与防范技术
  • Leetcode2807. 在链表中插入最大公约数
  • MySQL-DML
  • 开源项目 | 完整部署流程、一款开源人人可用的开源数据可视化分析工具
  • 我建立了一个资源分享群
  • C++中几个常用的类型选择模板函数
  • 【LeetCode】1321. 餐馆营业额变化增长
  • 【网络技术】【Kali Linux】Wireshark嗅探(八)动态主机配置协议(DHCP)
  • 算法29:不同路径问题(力扣62和63题)--针对算法28进行扩展
  • openGauss学习笔记-188 openGauss 数据库运维-常见故障定位案例-core问题定位
  • kubernetes入门到进阶(5)
  • 【字典树Trie】LeetCode-139. 单词拆分
  • pytest常用的第三方插件介绍
  • 【经验】VSCode连接远程服务器(可以使用git管理、方便查看和编辑Linux源码)
  • 机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?
  • MySQL学习笔记1: 数据库的简单介绍
  • 【Docker】安装ELK(Docker Compose)
  • 【机器学习:欧氏距离 】机器学习中欧氏距离的理解和应用
  • 系统安全及应用
  • Danil Pristupov Fork(强大而易用的Git客户端) for Mac/Windows
  • 最新GPT4.0使用教程,AI绘画,ChatFile文档对话总结+GPT语音对话使用,DALL-E3文生图
  • 【ARM 嵌入式 编译系列 7.2 -- GCC 链接脚本中 DEFINED 函数与 “AT>“ 符号详细介绍】
  • Linux基础——进程初识(二)
  • 国科大图像处理2024速通期末——汇总2017-2019、2023回忆
  • 编程笔记 html5cssjs 026 HTML输入类型(2/2)
  • Vue2 - 数据响应式原理
  • 基于华为云解析服务实现网站区域封禁
  • 在 Docker 中配置 MySQL 数据库并初始化 Project 项目
  • 生活中的物理3——神奇陷阱(随机倒下的抽屉柜门)