【问题标题】:Displaying projection-transformed text on a canvas-based D3 globe在基于画布的 D3 地球仪上显示投影转换的文本
【发布时间】:2015-11-24 01:07:03
【问题描述】:

我正在使用 D3 的 orthographic projection 构建一个被绘制到画布上的 rotating globe。我正在使用 d3.geo.* 向地球添加形状,特别是 geo.circle

我还想在地球上显示文本(也通过画布),但需要注意的是文本应该存在于 地球上,并具有适当的转换/曲率和剪裁,就像所有其他的一样呈现的 GeoJSON/TopoJSON 特征。不过only shapes created via d3.geo.path可以这样画。

有没有办法获取一些文本(和一个点,或者可能是一个边界框)并通过d3.geo.path 对其进行转换,以便可以在地球上正确绘制?这是我所追求的那种效果的照片(糟糕——形状不太正确)示例:

【问题讨论】:

标签: canvas d3.js map-projections


【解决方案1】:

您必须将字体作为原始向量获取,然后将文本创建为一组点以传递给 d3.js,以便它像处理国家轮廓一样将其投影到地图上。画布在可应用于文本等元素的转换方面非常有限。正交投影超出了它的能力范围。

因此,您必须获得矢量格式的字体。最简单的方法是使用 Photoshop、Illustrator、inkscape 或任何可以为您矢量化字体的软件包,然后编写函数来创建文本作为来自该矢量字体的路径。我浏览了 d3.js API 文档,似乎没有任何关于字体的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2017-07-24
    • 2017-07-22
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多