作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
谁能告诉我如何从 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/
我是一名优秀的程序员,十分优秀!