Я работаю над тем, как показать/скрыть точки, чтобы отфильтровать данные, которые я показываю в PointPrimitiveCollection на цезиевом глобусе. Я знаю, что вы можете ориентироваться по номеру индекса, но мне интересно, есть ли способ добавить какие-то метаданные к точкам, чтобы я мог ориентироваться на них на основе этих значений?
Как настроить таргетинг на конкретную точку в коллекции Cesium pointprimitive?
Ответы (1)
Вы можете добавить свойство после создания точки (эта строка: points.add({
position : Cesium.Cartesian3.fromDegrees(longitude, latitude),
color : color
}).customId = [longitude, latitude];
).
Вот работающий код:
var viewer = new Cesium.Viewer('cesiumContainer');
var points = viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection());
for (var longitude = -180; longitude < 180; longitude++) {
var color = Cesium.Color.PINK;
if ((longitude % 2) === 0) {
color = Cesium.Color.CYAN;
}
for (var latitude = -90; latitude < 90; latitude++) {
points.add({
position : Cesium.Cartesian3.fromDegrees(longitude, latitude),
color : color
}).customId = [longitude, latitude];
}
}
var red = false;
setInterval(function() {
var myPoints = points._pointPrimitives.filter(function(point){return point.customId[1] > -20 && point.customId[1] < 20;});
red = !red;
myPoints.forEach(function(point) {
point.color = red ? Cesium.Color.GREEN : Cesium.Color.RED;
})
}, 2000);
Этот код переключает цвет точек между -20 и 20 по широте. Вы можете установить любое пользовательское свойство и поэкспериментировать с ним (обратите внимание: этот код никоим образом не оптимален и предназначен только для демонстрации). Рабочий пример: http://plnkr.co/edit/DxWMwfdr4L5pfHRlVmlX?p=preview
person
yccteam
schedule
21.08.2017