- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望能够创建一个 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/
我正在尝试添加一个具有多种不同属性的实体,例如 Material (主要是 alpha)和旋转。 RectangleGraphics 覆盖了旋转,并且在我设置 Material 以表示纹理时起作用。
我正在测试 Cesiumjs 以查看它是否可以反射(reflect)近乎实时的体验 - 例如:飞机的位置。 为此,我需要绘制广告牌并让它们移动 - 我知道用铯可以做到这一点,只是不确定如何实现。 代码
我正在使用 Cesium 并希望在视觉上表示相同的两个实体之间的多条折线。例如,从实体 A 到实体 B 的绿色多段线,以及从实体 A 到实体 B 的蓝色多段线。我希望它们不要重叠或混合,所以我想象随着
我想使用铯在我的 map 中通过鼠标事件或键盘事件选项启用/禁用动态放大或缩小。cesium 中是否有启用/禁用此功能的任何选项或功能? 最佳答案 是的,这很简单,只需设置 enableZoom为假。
我有大量代表 map 上数据的框(类似于自定义数据源沙堡示例中的折线)。 我正在使用 addSample 来插入颜色变化,它按预期工作。但是,当我使用 SampledProperty 转换框尺寸时,性
我确信这很简单,但我已经搜索并查看了 Cesium 的文档。我在 Canvas 上绘制了几个点。它们根据它们所代表的内容进行颜色编码。我现在想“点击”一个点并在 JS 中发起一个 Action 。我已
我想这对于真正熟悉 Cesium 的 CZML 文件的人来说是一个简单的问题。我只是想使用 Cesium 将一系列纬度/经度/高度点显示为飞行路径。有人能告诉我“位置”标签应该是什么样的吗? 除非我找
我需要实现跟踪实体的前 View ,它会根据实体的移动而变化。 当我为 viewer.trackedEntity 属性赋值时,相机会占据某个位置。是否可以更改此位置,使相机直接位于跟踪实体的前面? 我
我想让我的相机跟随移动实体的第一人称视角。我不相信 trackedEntity 将适用于此用例,因为我不想查看实体,但我想查看 从它。我还希望用户能够使用鼠标相对于移动实体转动相机(例如,从移动平面的
如何在Cesium中设置不同形状的Z-index?请参阅下面的屏幕截图: 我希望圆柱体中的广告牌图标显示在圆柱体上。 提前致谢! 最佳答案 这并不容易,因为您的圆柱体是实际的 3D 体积,而您的广告牌
现在我使用 cesium-terrain-builder用于生成 .terrain 格式的地形图 block ,但我想知道 Cesium 可以与 float .tif 图 block 一起使用吗? 我
我正在尝试在基于标准 HelloWorld 示例应用程序的测试应用程序中加载以下 geoJson 文件。 { "type": "FeatureCollection", "generator":
当缩放比例增加到一定级别以上时,我想隐藏 map 的标签。 对于这个例子,我想在缩放级别 5 之后隐藏所有与 collection1 相关的标签: https://codepen.io/ollazar
我正在使用 Cesium JS,我是初学者。我在 2D 场景模式下初始化了 Cesium,但我无法将 map 居中。 这是我尝试过的: var widget = new Cesium.CesiumWi
我已将一些概述地球上每个国家/地区的 JSon 数据作为 GeoJSonDataSource 加载到我的 Cesium 项目中。每个国家/地区也作为单独的条目复制到数组中。为了突出显示一个国家/地区,
正在关注 guide at switch2osm.org我能够运行自己的 OSM tile 服务器。 我确实通过使用 webrowser 验证了我的 OSM tile 服务器的状态。例如在 http:
我是一名优秀的程序员,十分优秀!