gpt4 book ai didi

javascript - 自定义铯 html 广告牌

转载 作者:行者123 更新时间:2023-11-30 10:02:14 27 4
gpt4 key购买 nike

我希望能够创建一个 div 并为其指定高度、宽度和类。然后将 div 添加到 Cesium map 作为广告牌。

我可以创建带有图像和标签的广告牌并且还找到了 this有关如何使用 svg 的链接,但我无法弄清楚如何使广告牌包含动态生成的 html。这是在使用类名称将字体图标应用于 div 的项目。

有没有办法将 html 插入到广告牌中?还是有其他类(class)更适合这个?我是 Cesium 的新手,愿意接受建议。

最佳答案

广告牌旨在显示光栅化数据,例如图像。如果你想将 html 渲染成一个,你必须创建一个 Canvas 元素,draw the dom elements给它,然后将该 Canvas 作为图像属性传递给广告牌。

如果你实际上只需要让一个图标/图像可见,然后在用户点击它时显示一些 HTML,那么你应该使用 Entity API创建您的广告牌。当您使用实体 API 时,您会获得额外的属性,例如“描述”。描述可以是静态 HTML 字符串或可以根据需要经常更新的回调属性。当用户选择实体时会显示描述,通常是通过鼠标单击,但也可以通过 viewer.trackedEntity 属性以编程方式完成。

您可以在 Sandcastle 中运行它或 Codepen

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

var canvas = document.createElement('canvas');
canvas.width = 300;
canvas.height = 300;

var svgString = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">' +
'<foreignObject width="100%" height="100%">' +
'<div xmlns="http://www.w3.org/1999/xhtml" style="font-size:40px; color: #FF0">' +
'<em>I</em> like' +
'<span style="color:white; text-shadow:0 0 2px blue;">' +
'Cupcakes</span>' +
'</div>' +
'</foreignObject>' +
'</svg>';

var image = new Image();
image.src = 'data:image/svg+xml;base64,' + window.btoa(svgString);

//Need to wait for image to load before proceeding to draw
image.onload = function() {
canvas.getContext('2d').drawImage(image, 0, 0);

viewer.entities.add({
id: 'Cupcake SVG',
position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
billboard: {
image: canvas
},
description: '<p>This is a cupcake that can be modified.</p>'
});
};

关于javascript - 自定义铯 html 广告牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30989909/

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