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

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

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

我应该考虑其他方法吗?

谢谢,

特雷夫

最佳答案

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

使用以下两种方法都可以:


数据的自定义命名空间元素和/或属性
'role'属性及其相关属性,请参见here
正如您已经做过的那样,请注意'id'内部的值,请注意,并非所有字符都可以在'id'属性内使用
data- *属性(假定这些属性将变得更常见,因为HTML5允许使用这些属性,即使根据SVG规范它仍然无效)


无论如何,要注意的是使用自定义的非命名间隔属性和元素,因为这可能与将来向SVG规范中添加内容冲突。

08-18 05:47
查看更多