Динамическое изменение стиля линий в Cesium

Основная часть кода с использованием Cesium.js выглядит так:

 var viewer = new Cesium.Viewer('cesiumContainer');
 viewer.dataSources.add(Cesium.KmlDataSource.load('flight-paths.kml');

В файле Flight-paths.kml миллионы таких узлов:

<Placemark>
                <TimeSpan>
                    <begin>2007-01-01T01:50:00Z</begin>
                </TimeSpan>
                <styleUrl>#mairport0_icon0</styleUrl>
                <LineString>
                    <tessellate>1</tessellate>
                    <altitudeMode>absolute</altitudeMode>
                    <coordinates>
-98.1796384517953,47.8244940960245,683352.4617486351           -99.3279951928504,48.3541860848452,689546.54119779
                   </coordinates>
                </LineString>
</Placemark>

Стиль узлов определяется следующим образом:

Style id="mairport0_icon0">
    <LineStyle>
        <color>ff7fff85</color>
        <width>1.5</width>
    </LineStyle>
</Style>

В файле kml есть много определений стилей, что означает, что я не могу изменить определение стиля вручную. Как я могу получить строки в файле kml и изменить его стиль?


person Ben    schedule 12.12.2015    source источник


Ответы (1)


Если вы хотите программно изменить стиль в JavaScript, а не изменять KML, вы можете изменить свойства объекта после загрузки KML с помощью Cesium API.

Предположим, вы хотите изменить цвет линии на КРАСНЫЙ с прозрачностью 50%, тогда попробуйте следующее:

var source = new Cesium.KmlDataSource();
source.load('flight-paths.kml').then(function(){
    var entities = source.entities.values;    
    for(var i =0; i < entities.length; i++) {
        var e = entities[i];
        e.wall.outlineColor = Cesium.Color.RED.withAlpha(0.5);
    }
});
viewer.dataSources.add(source);

См. другие свойства поля стены объекта.
https://cesiumjs.org/Cesium/Build/Documentation/WallGraphics.html

person JasonM1    schedule 22.01.2016
comment
Большое спасибо! @JasonM1 - person Ben; 10.04.2016