2011-06-13 3 views
2

Android 용 SVG 이미지 파서 클래스를 만들었습니다.이 클래스는 멋지게 작동하며 원하는대로 만들었습니다. 현재 쓰고있는 어플리케이션은 Inkscape에서 미리 디자인 한 건물 평면도를 사용합니다. 이제는 계획에서 특정 X, Y 포인트를 표시 할 수 있지만 렌더링되지는 않지만 소프트웨어 응용 프로그램에 특정 포인트가 계획에 있음을 알리는 역할 만합니다. 이것은 응용 프로그램이 런타임에 해당 지점에 프로그래밍 방식으로 다양한 표식을 배치 할 수 있도록하기위한 것입니다.SVG 이미지에 메타 데이터 "마커"삽입 -이게 가능합니까?

실제로 코딩하는 것은 문제가되지 않습니다. 저는 이미 다양한 객체를 사용할 수 있지만 현재 텍스트 문자열을 사용하여 작업하고 있습니다. 내가하는 일은 텍스트 문자열을 배치하고 텍스트 문자열의 ID 속성에 "_meta"와 같은 특별한 접두어를 부여하는 것입니다. 그런 다음 내 SVG 파서가 해당 접두어를 식별하고 문자열의 X, Y 좌표를 "_meta"접두사 다음에 ID 속성에 넣은 다른 메타 데이터와 함께 기록합니다. 문자열은 화면에 렌더링되지 않습니다. 그것은 순수하게 특정 지점에 대해 소프트웨어에게 알리는 역할을합니다.

이 작업은 계속 진행되며 행복하게이 작업을 계속 수행 할 수 있지만이 작업을 수행하는 데 '올바른'방법이 더 효과적인지 여부는 알고 싶습니다. 필자는 SVG 사양을 검토했으며 표준 메타 데이터 태그에 대한 이해는 단지 이미지에 대한 정보를 전달할 수 있다는 것입니다. 내가 아는 한 특별히 X, Y 포인트를 표시하는 데 사용되는 객체와 같은 것은 없습니다. 프로그램에 의해 파싱 된 정보를 전달하기 위해 객체의 ID 필드를 사용하지만 ID 속성이 무엇인지에 대해 약간 잘못 인식하고 남용하는 것처럼 보입니다.

다른 방법을 고려해야합니까?

감사합니다,

Trev

+0

파서를 작성한 경우 새 네임 스페이스를 추가하고 찾을 수없는 이유가 있습니까? – Jess

+0

Andrew에게 감사드립니다. 하지만 Inkscape의 XML 편집기를 사용하거나 XML 파일을 손으로 편집하는 것과 달리 Inkscape의 GUI를 사용하여 계획상의 포인트를 표시 할 수있는 것이 매우 바람직합니다. 결과는 필자 나 다른 사용자가 파일에 특수 마커 좌표를 입력하지 않아도 응용 프로그램에 대한 새로운 계획을 세울 수 있다는 것입니다. 아마 이것에 대한 유일한 현실적인 장기적인 대답은 특별한 마커 기능을 제공하는 별도의 평면도 작성 프로그램을 코딩하고 제안 된대로 사용자 정의 네임 스페이스 아래에 삽입하는 것입니다. – Trevor

답변

2

순간에 SVG에 대한 관심의 특정 지점을 표시 할 요소가 없습니다. 그러나 점 요소를 추가하는 것은 SVG 작업 그룹에서 예를 들어 노드를 나타내는 요소를 그래프로 연결하고자하는 측면에서 논의되었다.

당신은 이러한 접근 방식 중 하나를 사용하여 괜찮을거야 :

  • 사용자 정의 네임 스페이스 요소 및/또는 데이터
  • 'role' 속성 및 관련 속성에 대한 속성, 내부 here
  • 값 참조 'id'속성에서 사용할 수있는 모든 문자가 아니라 'id'속성을 사용합니다.
  • data- * 속성 (HTML5에서 허용되므로 더 일반적으로 사용됩니다. SVG 스펙에 따라 유효 함).

어떤 경우 든 비 고유 네임 스페이스 속성 및 요소를 사용하는 것은 SVG 스펙에 대한 향후 추가와 충돌 할 수 있으므로주의해야합니다.