フリーズーム地図を実現する拡張機能
SVGは、描画の劣化なく伸縮自在なグラフィックスデータですが、同じデータを伸縮するだけですので、伸縮に伴って情報量が変わるわけではありません。一方、電子地図アプリケーションでは、一般に伸縮に伴って表示される情報量を変化させる機能が提供されています。
この機能を実現する汎用的な手法として、表示倍率に応じて個々の図形要素の表示非表示を制御できる機能が考えられます。SVGでも一時Ver.1.2の検討段階で、これを実現する仕様が検討(出典)されましたが、今のところペンディングになっています。SVG Mapコンソーシアムでは、この機能はWeb地図サービスにおいて必須と考え、SVG Map Profileとして拡張することにしました。
拡張する属性 : figure-visibility
図形要素に対し、表示縮尺に応じた表示・非表示制御を行うためのパラメータを設定する属性
対象となる親要素、Basic Shapes, Path, Text, <use>, <g>, <image>, <animation>
書式 : figure-visibility="[最小縮尺],[最大縮尺]"
表示縮尺が[最小縮尺]から[最大縮尺] の間にあるとき、その図形が表示
#表示縮尺の定義:
100×(ある図形の画面の座標系での長さ/その図形のSVGコンテンツ座標系での長さ)[%]
名前空間 : SVG Map Profileとして拡張する仕様は、Namespaces in XML仕様を用いて、SVGデータに埋め込みます。
SVG Map ProfileのためのネームスペースURL : http://purl.org/svgmap/profile
推奨する接頭語 : go
例:
<svg ... xmlns:go="http://purl.org/svgmap/profile">
....
<circle cy="100" cy="100" go:figure-visibility="100,200"/>
</svg>
等倍から2倍表示の間はcircle図形が表示される
表示倍率に応じて動的に地図を読み込むシステム
タイリングされた地図のコンテナで記載したビューアの実装要求仕様2を本拡張機能に基づき拡張し、表示倍率に応じて動的に地図データを読み込むメカニズムを実現します。
ビューアの実装要求仕様
<image>(または<animation>)要素に本属性を設置した場合、縮尺に応じて動的に地図データを取得する地図サービスを構築できるものとします。
該当する<image>要素が表示すべき倍率範囲に入った場合に、その<image>要素が参照しているデータを動的に取得するロジックを少なくとも実装していなければならないこととします。
例: Tiny SVG Base Map Content で紹介されている世界地図から電子国土データまでをフリーズーム&フリースクロールできる地図データ(http://www.svg-map.org/svg/basemaps/worldMapZ.svg)を参照ください。