一.概述
最近在做一个基于蓝牙的室内定位的项目,需要实现室内地图,查找了很多相关方面的资料,室内地图方面的技术还是比较空缺,室外的地图一般都是用经纬度做为坐标,而室内地图一般使用时间的米(x,y)作为坐标就可以了,用SVG矢量图作为室内地图,可以比较容易的实现室内地理坐标(x,y)与地图的对应,实现比较简单的室内地图应用。
二.SVG图介绍
SVG是一种基于XML的矢量图,相对与位图存储空间较少,且可以无级缩放而不失真,比较容易改写XML内容,可以实现一些比较炫酷的动态效果。
三.Android解析SVG并显示
SVG是基于XML的,android解析XML有三种方法,SAX,DOM,PULL,DOM解析需要比较多的内存,本文选取SAX解析XML。另外android 5.0起已经支持SVG图片解析,提供了不少的方便及参考。
SVG解释流程:首先先新建Picture类以实现对画图步骤命令的存储,在SAX解释的handle中实现对SVG内容的解析,Picture的beginRecording()方法返回canvas对象,把解释的内容画到返回的canvas对象中,实现SVG解释画图保存在Picture中。解析完以后可以定义一个控件来显示这个Picture。
下面为效果图: