javascript - 在 Dart 中创建 Cesium 图像提供程序

标签 javascript dart cesiumjs

我正在尝试使用 Cesium javascript 库在 dart 中加载 WMS map 。我可以使用以下代码从 .html 文件加载正确的 map :

<script>
    var widget = new Cesium.CesiumWidget('cesiumContainer', {
        imageryProvider : new Cesium.WebMapServiceImageryProvider({    
            url: "http://10.1.10.74:8080/geoserver/wms",
            layers : 'planet_osm_roads,planet_osm_polygon,planet_osm_line,planet_osm_point'
        })
    });
</script>

但是,当我尝试从 .dart 文件中加载它时,CesiumWidget 似乎会回退并使用默认的 BingMapsImageryProvider 而不是 WebMapService 提供程序。这是我在 .dart 中使用的代码

void main() {
    final ces_widget = context['Cesium']['CesiumWidget'];
    final wms = context['Cesium']['WebMapServiceImageryProvider'];

    String url = "http://10.1.10.74:8080/geoserver/wms";
    var provider = new JsObject(wms, [url, 'planet_osm_roads,planet_osm_polygon,planet_osm_line,planet_osm_point']);  

    if(provider['ready'] == true) {
        var widget = new JsObject(ces_widget, ['cesiumContainer', {'imageryProvider' : provider}]);
    }
}

除了tileHeight、tileWidth和ready之外,provider的所有属性都是null。有谁知道为什么没有创建 WMS 提供商?

正在创建Cesium Widget并加载 map ,它只是从默认的Bing Provider加载。

最佳答案

当您将 MapList 或类似 JSON 的结构从 Dart 传递到 JS 时,您必须使用 new JsObject.jsify(json)。例如,您的提供商应该是:

var provider = new JsObject(wms, 
  [new JsObject.jsify({
    'url': url, 
    'layers': 'planet_osm_roads,planet_osm_polygon,planet_osm_line,planet_osm_point'
  })]);
//....
var widget = new JsObject(ces_widget, ['cesiumContainer', new JsObject.jsify({'imageryProvider' : provider})]);

关于javascript - 在 Dart 中创建 Cesium 图像提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23524275/

相关文章:

reactjs - Jest 测试无法使用 create react app 和 craco 导入铯

javascript - Cesium JS 获取圆弧点数组的最佳方法

javascript - knockout 可见绑定(bind)不起作用

flutter - 在文本小部件中添加指向导航器的链接

javascript - 时间动态时,相同的 x、y、z 或纬度、经度、高度的相同位置显示不同

flutter 底部溢出无限像素

json - 如何根据其他下拉选项加载本地Json到Flutter DropDown?

javascript - 如何根据输入有条件地隐藏输入表单的某些部分?

javascript - 我想在 Next.js 中的路由更改之前创建一个确认模式

javascript - Android Javascript HTML 将包名称显示为值