Цезиевая метка scaleByDistance
У меня есть массив меток, которые я добавляю в глобус Цезия, используя LabelCollection как таковой:
data.forEach(function(country) {
countryLabels.add({
position: new Cesium.Cartesian3.fromDegrees(country.lat, country.lng),
text: country.name,
font: "12px arial"
});
});
Все отлично работает. Но метки отображаются в одном и том же относительном масштабе независимо от уровня масштабирования моей камеры. В идеале я хотел бы, чтобы надписи были скрыты, когда они были достаточно сильно уменьшены, и показывались только тогда, когда они не будут перекрывать друг друга.
Я знаю, что рекламные щиты имеют свойство scaleByDistance, но ярлыки - нет. Есть ли способ достичь этого, не прослушивая событие масштабирования на камере и не вручную очищая / повторно заполняя эту коллекцию LabelCollection?
Заранее спасибо.
1 ответ
Выполнение scaleByDistance на этикетках требует дополнительной работы, чтобы получить результаты, которые вы ожидаете получить при масштабировании этикеток. Если бы мы адаптировали ту же реализацию scaleByDistance из Billboards к меткам, каждый символ в метке корректно масштабировался бы по расстоянию, но расстояние между метками оставалось бы неизменным. Это связано с тем, что геометрия меток отправляется в графический процессор, где применяется преобразование scaleByDistance.
Метки поддерживают translucencyByDistance, которую можно использовать для обезжиривания.