首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义铯html广告牌

自定义铯html广告牌
EN

Stack Overflow用户
提问于 2015-06-22 21:12:16
回答 1查看 4.4K关注 0票数 2

我希望能够创建一个div并给它一个高度、宽度和类。然后将div作为广告牌添加到铯地图上。

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

有办法将html插入广告牌吗?还是有另一个更适合这种情况的类?我对铯很陌生,我愿意接受建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-04 17:16:36

广告牌是用来显示像图像这样的光栅化数据。如果要将html呈现给某个元素,则必须创建一个画布元素,然后将该画布作为其图像属性传递给广告牌。

如果您实际上只需要有一个图标/图像可见,然后在用户单击它时显示一些HTML,那么您应该使用实体API创建公告牌。在使用实体API时,将为您提供其他属性,如“description”。描述可以是静态HTML字符串或回调属性,可以根据需要随时更新。描述是在用户选择实体时显示的,通常是通过鼠标单击,但可以通过viewer.trackedEntity属性以编程方式完成。

您可以在沙堡科德芬中运行此操作。

代码语言:javascript
复制
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>'
  });
};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30989909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档