gpt4 book ai didi

javascript - Cesiumjs:如何从 GeoJsonDataSource 迭代数据

转载 作者:行者123 更新时间:2023-12-01 13:59:23 24 4
gpt4 key购买 nike

谁能告诉我如何从 GeoJsonDataSource 获取位置数据?这是我正在做的事情:

entity1 = Cesium.GeoJsonDataSource.fromUrl('../../SampleData/markersdata.geojson');
var array1 = entity1.entities.entities; //According to document, this should an array of entity instances, but it only returns an empty array.
console.log(array1);
// []
//If I do this:
var assocArray = entity1.entities._entities; //This returns an associative array
var markersArr = assocArray.values; //I expect this returns an array of values, but it still returns empty array.
console.log(markersArr);
// []

非常感谢您的帮助!

最佳答案

GeoJsonDataSource.fromUrl 返回一个仍在加载数据过程中的新实例(isLoading 属性将为 true)。在触发 loadingEvent 事件之前,您不能使用数据源中的数据。在这种情况下,自己创建新实例并改用 loadUrl 会更容易。这仍然是一个异步操作;但它返回一个在数据准备好时解决的 promise 。参见铯的 GeoJSON Sandcastle demo举个例子。这是一种常见的模式,不仅在 Cesium 中,在整个 JavaScript 中也是如此。你可以阅读更多关于 Cesium 使用的 promise 系统 here .

这里有一小段代码向您展示如何进行迭代。

var dataSource = new Cesium.GeoJsonDataSource();
dataSource.loadUrl('../../SampleData/ne_10m_us_states.topojson').then(function() {
var entities = dataSource.entities.entities;
for (var i = 0; i < entities.length; i++) {
var entity = entities[i];
...
}
});
viewer.dataSources.add(dataSource);

关于javascript - Cesiumjs:如何从 GeoJsonDataSource 迭代数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26395782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com