Вставка метаданных "маркеров" в изображение SVG - возможно ли это? - PullRequest
2 голосов
/ 13 июня 2011

Я создал класс синтаксического анализатора изображений SVG для Android, который прекрасно работает и в значительной степени подходит для целей, которые я хочу.Приложение, которое я сейчас пишу, использует планы этажей здания, которые я заранее проектирую в Inkscape.Теперь, что я хотел бы сделать, это иметь возможность пометить конкретные точки X, Y на плане, которые не будут отображаться, а просто будут информировать приложение о том, где находятся конкретные точки на плане.Это сделано для того, чтобы приложение могло программно размещать различные маркеры в этих точках во время выполнения.

Фактическое кодирование не является проблемой;В настоящее время я уже использую текстовые строки, хотя могу использовать различные объекты.Я помещаю текстовую строку, и я присваиваю атрибуту текстовой строки специальный префикс, такой как _meta.Затем мой анализатор SVG идентифицирует этот префикс и записывает координаты X, Y строки вместе с любыми другими метаданными, которые я вставил в атрибут ID после префикса "_meta".Строка не отображается на экране;он служит исключительно для того, чтобы рассказать программному обеспечению о конкретной точке.

Это работает, и я могу с радостью продолжать делать это так, но мне хотелось бы знать, есть ли более «правильный» или более элегантный способ сделать это.Я просмотрел спецификацию SVG, и мое понимание стандартных тегов метаданных заключается в том, что они просто могут передавать информацию об изображении.Насколько я знаю, нет такой вещи, как объект, который служит специально для обозначения любой точки X, Y.Использование поля идентификатора объекта для передачи информации, анализируемой программой, работает, но кажется, что это неправильно и неправильно для чего используется атрибут идентификатора.

Любые другие подходы, которые я должен рассмотреть?

Спасибо,

Трев

1 Ответ

2 голосов
/ 13 июня 2011

Нет элемента для обозначения конкретной точки интереса в SVG на данный момент. Однако добавление точечного элемента обсуждалось в рабочей группе SVG в контексте желания, например, соединить элементы, представляющие узлы на графике.

Вы будете в порядке, используя любой из этих подходов:

  • настраиваемые элементы пространства имен и / или атрибуты для ваших данных
  • атрибут 'role' и связанные с ним атрибуты, см. здесь
  • значение внутри 'id', как вы уже сделали, отметив, что не все символы могут использоваться внутри атрибута 'id'
  • data- * атрибуты (предположительно, они станут более распространенными, поскольку это разрешено в HTML5, даже если они еще не действительны согласно спецификации SVG)

В любом случае следует соблюдать осторожность, используя нестандартные атрибуты и элементы без пространства имен, поскольку это может конфликтовать с будущими дополнениями к спецификации SVG.

...