从文件中加载 czml/json 数据并将其存储到变量中
Load czml/json data from file and store it into variable
我正在使用 Cesium 提供的 Sandcastle 界面,但我的问题可以扩展(我猜)到任何 javascript 用户。我的目标是加载一个 czml 文件(也可以是一个 .json 文件)并将其内容存储到一个变量中以便简单地访问它的标签。
这里有一个小例子:假设文件(test.czml)内容如下:
[{
"id" : "document",
"name" : "Basic CZML billboard and label",
"version" : "1.0"
}, {
"id" : "Point A",
"name" : "Point A",
"label" : {
"fillColor" : {
"rgba" : [255, 255, 255, 255]
},
"font" : "12pt Lucida Console",
"horizontalOrigin" : "LEFT",
"pixelOffset" : {
"cartesian2" : [8, 0]
},
"style" : "FILL",
"text" : "Point A",
"showBackground" : true,
"backgroundColor" : {
"rgba" : [112, 89, 57, 200]
}
},
"position" : {
"cartographicDegrees":[
0, 0, 0
]
}
}, {
"id" : "Point B",
"name" : "Point B",
"label" : {
"fillColor" : {
"rgba" : [255, 255, 255, 255]
},
"font" : "12pt Lucida Console",
"horizontalOrigin" : "LEFT",
"pixelOffset" : {
"cartesian2" : [8, 0]
},
"style" : "FILL",
"text" : "Point B",
"showBackground" : true,
"backgroundColor" : {
"rgba" : [112, 89, 57, 200]
}
},
"position" : {
"cartographicDegrees":[
0, 10, 0
]
}
}]
我的最终目标是通过以下方式访问内容:
var czml = function_to_load_data(test.czml)
console.log(czml[1].id)
我能够使用以下命令加载数据:
var czml = Cesium.CzmlDataSource.load('../../SampleData/simple.czml'));
但是这种方法并不如我所愿。什么是实现我的目标的聪明而优雅的方式?
我能够在 Cesium 中实现我的解决方案的可能方式:
var viewer = new Cesium.Viewer('cesiumContainer');
Cesium.loadJson('../../SampleData/test.czml').then(function(jsonData) {
console.log(jsonData[1].id);
}).otherwise(function(error) {
// an error occurred
});
我正在使用 Cesium 提供的 Sandcastle 界面,但我的问题可以扩展(我猜)到任何 javascript 用户。我的目标是加载一个 czml 文件(也可以是一个 .json 文件)并将其内容存储到一个变量中以便简单地访问它的标签。
这里有一个小例子:假设文件(test.czml)内容如下:
[{
"id" : "document",
"name" : "Basic CZML billboard and label",
"version" : "1.0"
}, {
"id" : "Point A",
"name" : "Point A",
"label" : {
"fillColor" : {
"rgba" : [255, 255, 255, 255]
},
"font" : "12pt Lucida Console",
"horizontalOrigin" : "LEFT",
"pixelOffset" : {
"cartesian2" : [8, 0]
},
"style" : "FILL",
"text" : "Point A",
"showBackground" : true,
"backgroundColor" : {
"rgba" : [112, 89, 57, 200]
}
},
"position" : {
"cartographicDegrees":[
0, 0, 0
]
}
}, {
"id" : "Point B",
"name" : "Point B",
"label" : {
"fillColor" : {
"rgba" : [255, 255, 255, 255]
},
"font" : "12pt Lucida Console",
"horizontalOrigin" : "LEFT",
"pixelOffset" : {
"cartesian2" : [8, 0]
},
"style" : "FILL",
"text" : "Point B",
"showBackground" : true,
"backgroundColor" : {
"rgba" : [112, 89, 57, 200]
}
},
"position" : {
"cartographicDegrees":[
0, 10, 0
]
}
}]
我的最终目标是通过以下方式访问内容:
var czml = function_to_load_data(test.czml)
console.log(czml[1].id)
我能够使用以下命令加载数据:
var czml = Cesium.CzmlDataSource.load('../../SampleData/simple.czml'));
但是这种方法并不如我所愿。什么是实现我的目标的聪明而优雅的方式?
我能够在 Cesium 中实现我的解决方案的可能方式:
var viewer = new Cesium.Viewer('cesiumContainer');
Cesium.loadJson('../../SampleData/test.czml').then(function(jsonData) {
console.log(jsonData[1].id);
}).otherwise(function(error) {
// an error occurred
});