Цезиевая метка 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, которую можно использовать для обезжиривания.

Другие вопросы по тегам