mapbox - 如何使用 circle-translate 将 geojson 圆移动 50% 的动态半径
问题描述
我有一个 Mapbox 层,其中有多个具有完全相同坐标的 GEOJson 功能(因此它们相互堆叠)。
为了防止它们被堆叠的问题,我希望使用该circle-translate
选项将每个圆圈从另一个圆圈移开。如果每个圆圈都很20px
宽,这将很容易,因为我可以将一个10px
向左移动,另一个10px
向右移动。
我的问题是每个圆的半径是根据特征的值生成的,所以有些比其他的大。因此,我需要该translate
值是圆直径的 50%。
有没有办法做到这一点?
这是我的图层的代码
const LNG = {
name: 'LNG',
id: 'lng-markers',
showDetailsOnHover: true,
source: {
type: 'geojson',
data,
},
type: 'circle',
paint: {
'circle-color': '#E74133',
'circle-translate': [-10, -10],
'circle-radius': [
'interpolate',
['exponential', 1],
['number', ['get', 'LNG']],
0,
7,
10,
10,
100,
15,
1000,
20,
10000,
25,
100000,
30,
1000000,
35,
10000000,
40,
100000000,
45,
],
},
opacity: 70,
checked: true,
offset: { bottom: [0, -10] },
childLayers: [
{
id: 'lng-markers__props',
type: 'symbol',
filter: ['>', `${ 'LNG' }`, 0],
source: 'lng-markers',
layout: {
'text-field': `{${ 'LNG' }_en}`,
'text-font': ['DIN Offc Pro Medium', 'Arial Unicode MS Bold'],
'text-size': 12,
},
paint: {
'text-color': '#FFFFFF',
'text-translate': [-10, -10],
},
},
],
};
解决方案
circle-translate
如果支持数据驱动的样式,这将非常简单。您只需使用相同的表达式,但值是大小的一半。
唉,它没有。
在将 GeoJSON 数据添加到地图之前,您可能需要考虑修改它。
推荐阅读
- salesforce - 打包 DX 项目并出现错误“必须在激活此工作流规则之前设置默认工作流用户”
- docker-compose - 访问神器docker时出现tomcat 404错误
- javascript - 用 Jest 测试函数链
- javascript - 使用值数组反转对象键
- ajax - AJAX 网站的 GA 解决方案
- python - Not able to debug AWS SAM hello world application
- java - setPreferencesFromResource 与 addPreferencesFromResource
- entropy - 条件熵
- angular - 如何用角度解决数据绑定错误
- r - 如何从假变为真