gpt4 book ai didi

Cesium:主题化信息框

转载 作者:行者123 更新时间:2023-12-04 14:24:37 25 4
gpt4 key购买 nike

我在 Google Groups 上看到了一些示例,它们演示了如何修改信息框的 css。在此特定示例中,使用 javascript 将 css 链接附加到文档的头部:

https://groups.google.com/forum/#!topic/cesium-dev/f0iODd42PeI

var cssLink = frameDocument.createElement("link");
cssLink.href = buildModuleUrl('Path/To/Your/CSS/File.css');
cssLink.rel = "stylesheet";
cssLink.type = "text/css";
viewer.infoBox.frame.contentDocument.head.appendChild(cssLink);

然而,这并没有导致我的标记风格发生任何变化。

充其量,我已经能够通过在加载 geoJson 数据集之后遍历 .then 函数调用中的实体来包装信息框的内容。包装内容时,我可以设置在结果标记中很明显的样式值。
var dataSource = Cesium.GeoJsonDataSource.load('../data/mGeoJson.json').then(function(data)  {
viewer.dataSources.add(data);
var entities = data.entities.values;
for (var i = 0; i < entities.length; i++)
var entity = entities[i];
if (entity.properties.hasOwnProperty("description")) {
entity.description = '<div style="height: 360px;">' + entity.properties.description
+ '</div>';
}
}
}

这很有用,但不能完全满足我的应用程序的要求。

有人可以提供有关覆盖信息框主题的更多见解,而不必遍历实体以修改其描述属性的值吗?

最佳答案

这里的原始解决方案不起作用,因为 infoBox 是一个 iframe,在您尝试修改它时尚未异步加载。

相反,您可以添加 load iframe 的监听器,如下所示:

var viewer = new Cesium.Viewer('cesiumContainer');
var frame = viewer.infoBox.frame;

frame.addEventListener('load', function () {
var cssLink = frame.contentDocument.createElement('link');
cssLink.href = Cesium.buildModuleUrl('Path/To/Your/CSS/File.css');
cssLink.rel = 'stylesheet';
cssLink.type = 'text/css';
frame.contentDocument.head.appendChild(cssLink);
}, false);

这将等待 iframe 准备好接收修改,然后应用它。

关于Cesium:主题化信息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39375081/

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