簡體   English   中英

Cesiumjs:如何從GeoJsonDataSource迭代數據

[英]Cesiumjs: How to iterate data from GeoJsonDataSource

誰能告訴我如何從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更容易。 這仍然是異步操作; 但它會返回一個承諾,當數據准備就緒時,該承諾將解決。 有關這樣做的示例,請參閱Cesium的GeoJSON Sandcastle演示 這是一種常見的模式,不僅僅是在Cesium中,而是一般的JavaScript。 您可以在此處閱讀有關Cesium使用的承諾系統的更多信息。

這是一小段代碼,向您展示如何迭代。

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM