2

我已经为 Android 创建了一个 SVG 图像解析器类,它运行良好,并且对于我想要的目的来说非常完整。我目前正在编写的应用程序利用了我事先在 Inkscape 中设计的建筑平面图。现在,我想做的是能够在计划上标记特定的 X、Y 点,这些点不会被渲染,但只会用于通知软件应用程序特定点在计划中的位置。这样应用程序就可以在运行时以编程方式将各种标记放置在这些点上。

它的实际编码不是问题。虽然我可以使用各种对象,但我目前已经使用文本字符串工作了。我所做的是放置一个文本字符串,并给文本字符串的 ID 属性一个特殊的前缀,例如“_meta”。然后,我的 SVG 解析器识别该前缀,并记录字符串的 X、Y 坐标以及我在“_meta”前缀之后放入 ID 属性中的任何其他元数据。字符串不会呈现到屏幕上;它纯粹是为了告诉软件一个特定的点。

这行得通,我可以愉快地继续这样做,但我想知道是否有更“正确”或更优雅的方式来做到这一点。我查看了 SVG 规范,我对标准元数据标签的理解是它们只能传达有关图像的信息。据我所知,没有专门用于标记任何 X、Y 点的对象。使用对象的 ID 字段来传达程序解析的信息是可行的,但它似乎有点错误并且滥用了 ID 属性的用途。

我应该考虑其他任何方法吗?

谢谢,

特雷夫

4

1 回答 1

2

目前没有元素可以标记 svg 中的特定兴趣点。然而,在 SVG 工作组中已经讨论了添加点元素,例如想要连接表示图中节点的元素。

使用以下任何一种方法都可以:

  • 数据的自定义命名空间元素和/或属性
  • 'role'属性及其相关属性,请参见此处
  • 正如您已经完成的那样,“id”中的值,注意并非所有字符都可以在“id”属性中使用
  • data-* 属性(可能这些会变得更常见,因为 HTML5 允许这样做,即使根据 SVG 规范它还不是有效的)

在任何情况下,要小心使用自定义的非命名空间属性和元素,因为这可能会与 SVG 规范的未来添加冲突。

于 2011-06-13T18:25:51.963 回答