当前位置: 首页 > 知识库问答 >
问题:

前端 - Cesium 为什么label的eyeOffset设置的距离会有偏差 相比于圆?

郏稳
2023-10-09

总共四个entity,有一辆车三个圆且都在一个位置。在三个圆的右侧边缘显示一个label,我用的eyeOffset来偏移label的位置到右侧边缘(因为position在圆心),往右偏移会有明显的误差,往上偏移就没多少误差。
往右偏移:
12f6b5e07c218f455cf3332c53ad591.jpg
往上偏移:
3520dad610e73b4d484c0a92adae914.jpg
一辆车:

const position = Cesium.Cartesian3.fromDegrees(123, 23, 0)const color = Cesium.Color.fromCssColorString('#fff')entities.add({    position,    billboard: { image: icon, scale: 0.2, color }})

三个圈附带label

for (let i = 1; i <= 3; i++) {    entities.add({        position,        ellipse: {            fill: false,            outline: true,            outlineColor: new Ceisum.Color(1, 1, 1, 0.5),            semiMinorAxis: 100000 * i, // 半径            semiMajorAxis: 100000 * i, // 半径            height: 0        },        label: {            test: 100 * i + 'km',            font: '14px sans-serif',            fillColor: new Cesium.Color(1, 1, 1, 0.5),            eyeOffset: new Cesium.Cartesian3(100000 * i, 0, 0) // eyeOffset相对圆心偏移        }    })}

共有2个答案

孔砚
2023-10-09

f409bf9bbf5bc8b64a297ba8d4bba52.jpg

司马宏茂
2023-10-09
function computeLabelPosition(center, radius, bearing) {    // 用Cesium的Spherical几何计算    let spherical = new Cesium.Spherical(bearing, 0, radius);    let offsetPosition = new Cesium.Cartesian3();    Cesium.Cartesian3.add(center, Cesium.Cartesian3.fromSpherical(spherical), offsetPosition);    return offsetPosition;}// 用该方法为每个标签计算位置for (let i = 1; i <= 3; i++) {    let labelPosition = computeLabelPosition(position, 100000 * i, Cesium.Math.toRadians(90)); // 90度表示右侧    entities.add({        position: labelPosition,        // ... 其他属性    });}
 类似资料:
  • 我使用Levenshtein距离算法将作为用户输入提供的公司名称与已知公司名称数据库进行比较,以找到最接近的匹配项。算法本身工作正常,但我想构建一个偏差,这样如果字符串的初始部分匹配,编辑距离就会被认为更低。 例如,如果搜索条件是“ABCD”,那么“ABCD Co.”和“XYX ABCD”具有相同的编辑距离。但是,我想增加一个事实,即第一个字符串的开头部分比第二个字符串更符合搜索条件。

  • 本文向大家介绍顶点之间的距离和偏心距,包括了顶点之间的距离和偏心距的使用技巧和注意事项,需要的朋友参考一下 两个顶点之间的距离 它是顶点U和顶点V之间最短路径中的边数。如果有多个路径连接两个顶点,则最短路径被视为两个顶点之间的距离。 表示法-d(U,V) 从一个顶点到另一顶点可以有任意数量的路径。其中,您只需要选择最短的一个即可。 示例 看一下下图- 在这里,从顶点“ d”到顶点“ e”或简称“

  • line-height是设置行高,但是有一个问题,我不希望第一行的top和最后一行bottom也被影响,言外之意就是我只想设置段落内的间距,这该怎么做呢?

  • 本文向大家介绍什么是偏差和方差?相关面试题,主要包含被问及什么是偏差和方差?时的应答技巧和注意事项,需要的朋友参考一下 泛化误差可以分解为偏差的平方加上方差加上噪声。 偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力 方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据扰动所造成的影响 噪声表达了当前任务上任何学习算法所能达到的期望泛化误差下界,刻画了问

  • 这里的border-image-slice为什么设置为1,为什么不是4,或者其他值?

  • 本文向大家介绍什么是编辑距离?相关面试题,主要包含被问及什么是编辑距离?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 概念 编辑距离的作用主要是用来比较两个字符串的相似度的 编辑距离,又称Levenshtein距离(莱文斯坦距离也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越是不同。许可的编辑操作包括将一个字符替