基于安卓操作系统的地图标绘方法及系统

著录项
  • CN201410802652.7
  • 20141219
  • CN104536743A
  • 20150422
  • 中国电子科技集团公司第十五研究所
  • 刘伟;雷鸣;张鹏飞;其他发明人请求不公开姓名
  • G06F9/44
  • G06F9/44

  • 北京市海淀区北四环中路211号
  • 北京(11)
  • 工业和信息化部电子专利中心
  • 田俊峰
摘要
本发明公开了一种基于安卓操作系统的地图标绘方法,包括:基本图元绘制,基本图元包括线段、折线、圆、圆弧、椭圆和文字,图元属性包括颜、填充样式和线型;规则标号绘制,以递归的方式分别绘制组成标号的所有图元;非规则标号绘制,非规则标号包括闭曲线、开曲线、法线、箭头、填充;标号控制,通过移动标号控制点对标号进行平移、缩放和旋转、形状变换。本发明还公开了一种基于安卓操作系统的地图标绘系统。采用本发明,开发人员无须关心安卓操作系统底层绘图机制就可以方便、高效地在安卓移动终端上进行地图标绘系统开发,不仅节约了开发成本,也降低了地图与地图标绘之间的耦合度,提高了软件的可维护性。
权利要求

1.一种基于安卓操作系统的地图标绘方法,其特征在于,所述方法包括 以下步骤:

基本图元绘制,所述基本图元包括线段、折线、圆、圆弧、椭圆和文字, 图元属性包括颜、填充样式和线型;

规则标号绘制,以递归的方式分别绘制组成所述标号的所有图元;

非规则标号绘制,所述非规则标号包括闭曲线、开曲线、法线、箭头、填 充;

标号控制,通过移动标号控制点对标号进行平移、缩放和旋转、形状变换。

2.如权利要求1所述的基于安卓操作系统的地图标绘方法,其特征在于, 所述基本图元绘制的过程具体包括:

根据决定基本图元形状的操作数计算基本图元的上下左右边界;

根据所述操作数计算绘图轨迹,并将绘图轨迹存储到安卓绘图接口提供的 android.graphics.Path类中;

在绘图方法中根据所述图元属性创建画笔,并将绘图轨迹绘制到画布上。

3.如权利要求2所述的基于安卓操作系统的地图标绘方法,其特征在于, 所述操作数和图元属性在数据库中的存储结构如下表:

4.如权利要求1所述的基于安卓操作系统的地图标绘方法,其特征在于, 所述规则标号绘制的过程包括:

当所述规则标号由多个子图元构成时,分别递归调用子图元的绘图方法;

当所述规则标号是基本图元时,进行基本图元绘制。

5.如权利要求1所述的基于安卓操作系统的地图标绘方法,其特征在于, 所述非规则标号绘制具体为:

利用B样条函数、曲线等间距分割算法、求曲线上某点法线斜率算法、箭 头画法和/或闭域内填充平行线段算法对非规则标号进行绘制。

6.如权利要求1所述的基于安卓操作系统的地图标绘方法,其特征在于, 所述规则标号的控制点包括平移控制点、缩放控制点和旋转控制点;所述非规 则标号的控制点包括平移控制点、缩放控制点、旋转控制点、形状控制点和定 位点。

7.如权利要求6所述的基于安卓操作系统的地图标绘方法,其特征在于, 所述标号控制的过程包括:

通过安卓系统提供的OnTouchDown回调函数捕获屏幕上的触摸事件,并 记录事件发生的屏幕坐标;

触摸动作发生后,调用Marking类的hitTest方法遍历标号的所有控制点, 当存在某个控制点,使得触屏位置在所述控制点的有效区域内时,通过回调函 数返回所述控制点;

在的回调函数中缓存当前选中的控制点对象;

通过安卓系统提供的OnTouchMove回调函数捕获屏幕滑动事件,记录滑 动事件发生位置的屏幕坐标;

调用控制点的moveTo方法将屏幕滑动事件传递给当前选中的控制点对 象;

所述控制点对象将屏幕滑动事件传递给标号对象;

标号对象接收到控制点移动事件后,根据被移动控制点的类型对本标号进 行平移、缩放、旋转和/或形状变换操作,并将操作后的标号重新绘制到画布上。

8.如权利要求7所述的基于安卓操作系统的地图标绘方法,其特征在于, 通过安卓绘图接口提供的android.graphics.Region类的contains方法判断触屏位 置是否在控制点有效区域内。

9.一种基于安卓操作系统的地图标绘系统,其特征在于,所述系统包括 基本图元绘制模块、规则标号绘制模块、非规则标号绘制模块和标号控制模块;

所述基本图元绘制模块由继承至AbstractDrawItem基类的绘图类组成,用 于绘制线段、折线、圆、圆弧、椭圆和文字;

所述规则标号绘制模块统一封装在Marking类中,在Marking类中采用组 合模式将各个图元组合成完整的规则标号,并提供修改标号属性的接口;

所述非规则标号绘制模块由继承至AbstractIrregularMark基类的绘图类组 成,用于提供非规则标号的绘制算法;

所述标号控制模块由继承至AbstractAdjustHandle基类的控制类组成,用 于旋转、平移、缩放控制点绘制和触控事件监听。

10.如权利要求9所述的基于安卓操作系统的地图标绘系统,其特征在于, 所述修改标号属性的接口包括放大倍率接口、控制点接口、位置坐标接口、标 签接口、旋转角度接口。

说明书
技术领域

本发明涉及地图标绘领域,特别是涉及一种基于Android(安卓)操作系 统的地图标绘方法及系统。

上世纪90年代中后期以来,无线网络通信技术及互联网技术得到了飞速 发展,促使移动通信设备功能的不断增强、越来越智能化。人们急切要求走出 固定网络、有线互联的束缚,业务应用的可移动、可随时随地接入等特性越来 越受到重视。随着移动互联的广泛应用,在移动设备上查看地图、进行地图标 绘已成为地图标绘技术发展的必然趋势。

在Windows平台上,目前已经有很多成型的地图标绘工具包、开发包,例 如超图动态指挥标绘开发软件(.NET版)(SuperMap DGO.NET)是基于.NET开 发语言实现,并配合SuperMap Objects.NET 6R产品使用的图形开发工具包, 主要用于在Windows平台上快速开发、定制面向行业领域的C/S架构的二三维 应用系统,提供面向特定行业的符号模型。而在移动设备上,目前还没有成型 的地图标绘技术。由于Android操作系统底层绘图机制与Windows不同, Windows上的地图标绘工具无法直接应用到Android平台上。

本发明要解决的技术问题是提供一种基于安卓操作系统的地图标绘方法 及系统,用以解决现有技术在Android操作系统没有成型的地图标绘技术的问 题。

为解决上述技术问题,本发明提供一种基于安卓操作系统的地图标绘方 法,所述方法包括以下步骤:

基本图元绘制,所述基本图元包括线段、折线、圆、圆弧、椭圆和文字, 图元属性包括颜、填充样式和线型;

规则标号绘制,以递归的方式分别绘制组成所述标号的所有图元;

非规则标号绘制,所述非规则标号包括闭曲线、开曲线、法线、箭头、填 充;

标号控制,通过移动标号控制点对标号进行平移、缩放和旋转、形状变换。

进一步,所述基本图元绘制的过程具体包括:

根据决定基本图元形状的操作数计算基本图元的上下左右边界;

根据所述操作数计算绘图轨迹,并将绘图轨迹存储到安卓绘图接口提供的 android.graphics.Path类中;

在绘图方法中根据所述图元属性创建画笔,并将绘图轨迹绘制到画布上。

进一步,所述操作数和图元属性在数据库中的存储结构如下表:



进一步,所述规则标号绘制的过程包括:

当所述规则标号由多个子图元构成时,分别递归调用子图元的绘图方法;

当所述规则标号是基本图元时,进行基本图元绘制。

进一步,所述非规则标号绘制具体为:

利用B样条函数、曲线等间距分割算法、求曲线上某点法线斜率算法、箭 头画法和/或闭域内填充平行线段算法对非规则标号进行绘制。

进一步,所述规则标号的控制点包括平移控制点、缩放控制点和旋转控制 点;所述非规则标号的控制点包括平移控制点、缩放控制点、旋转控制点、形 状控制点和定位点。

进一步,所述标号控制的过程包括:

通过安卓系统提供的OnTouchDown回调函数捕获屏幕上的触摸事件,并 记录事件发生的屏幕坐标;

触摸动作发生后,调用Marking类的hitTest方法遍历标号的所有控制点, 当存在某个控制点,使得触屏位置在所述控制点的有效区域内时,通过回调函 数返回所述控制点;

在的回调函数中缓存当前选中的控制点对象;

通过安卓系统提供的OnTouchMove回调函数捕获屏幕滑动事件,记录滑 动事件发生位置的屏幕坐标;

调用控制点的moveTo方法将屏幕滑动事件传递给当前选中的控制点对 象;

所述控制点对象将屏幕滑动事件传递给标号对象;

标号对象接收到控制点移动事件后,根据被移动控制点的类型对本标号进 行平移、缩放、旋转和/或形状变换操作,并将操作后的标号重新绘制到画布上。

进一步,通过安卓绘图接口提供的android.graphics.Region类的contains 方法判断触屏位置是否在控制点有效区域内。

本发明还提供一种基于安卓操作系统的地图标绘系统,所述系统包括基本 图元绘制模块、规则标号绘制模块、非规则标号绘制模块和标号控制模块;

所述基本图元绘制模块由继承至AbstractDrawItem基类的绘图类组成,用 于绘制线段、折线、圆、圆弧、椭圆和文字;

所述规则标号绘制模块统一封装在Marking类中,在Marking类中采用组 合模式将各个图元组合成完整的规则标号,并提供修改标号属性的接口;

所述非规则标号绘制模块由继承至AbstractIrregularMark基类的绘图类组 成,用于提供非规则标号的绘制算法;

所述标号控制模块由继承至AbstractAdjustHandle基类的控制类组成,用 于旋转、平移、缩放控制点绘制和触控事件监听。

进一步,所述修改标号属性的接口包括放大倍率接口、控制点接口、位置 坐标接口、标签接口、旋转角度接口。

本发明有益效果如下:

采用本发明基于安卓操作系统的地图标绘方法及系统,开发人员无须关心 Android操作系统底层绘图机制就可以方便、高效地在Android移动终端上进 行地图标绘系统开发,不仅节约了开发成本,也大大降低了地图与地图标绘之 间的耦合度,提高了软件的可维护性。

另外,当已有的图元不能提供满足用户要求的标号时,本发明可以通过继 承AbstractDrawItem或AbstractIrregularMark虚基类来分别对基本图元和非规 则标号进行扩充,从而达到动态扩展新标号的目的。

图1是本发明实施例的一种基于安卓操作系统的地图标绘系统的结构示 意图;

图2是本发明实施例的一种基于安卓操作系统的地图标绘系统的具体结 构示意图;

图3是本发明实施例的一种基本图元绘制的流程图;

图4是本发明实施例的一种标号控制的流程图。

为了解决现有技术在Android操作系统没有成型的地图标绘技术的问题, 本发明提供了一种基于安卓操作系统的地图标绘方法及系统,以下结合附图以 及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施 例仅仅用以解释本发明,并不限定本发明。

本发明实施例的一种基于安卓操作系统的地图标绘系统,封装了一套基于 Android操作系统的地图标绘开发接口,其结构如图1和图2所示,所述系统 包括基本图元绘制模块11、规则标号绘制模块12、非规则标号绘制模块13和 标号控制模块14。

所述基本图元绘制模块11由继承至AbstractDrawItem基类的绘图类组成, 用于绘制线段、折线、圆、圆弧、椭圆和文字;所述继承至AbstractDrawItem 基类的绘图类包括DrawLine、DrawCircle、DrawArc等类。

所述规则标号绘制模块12统一封装在Marking类中,在Marking类中采 用组合模式将各个图元组合成完整的规则标号,并提供修改标号属性的接口, 所述修改标号属性的接口包括放大倍率接口、控制点接口、位置坐标接口、标 签接口、旋转角度接口等。

所述非规则标号绘制模块13由继承至AbstractIrregularMark基类的绘图类 组成,用于提供非规则标号的绘制算法;所述继承至AbstractIrregularMark基 类的绘图类包括BigArrow、DoubleArrow、SlimArrow等类。

所述标号控制模块14由继承至AbstractAdjustHandle基类的控制类组成, 用于旋转、平移、缩放控制点绘制和触控事件监听;所述继承至 AbstractAdjustHandle基类的控制类包括RotateHandle、TransformHandle、 TranslateHandle等类。

本发明实施例的一种基于安卓操作系统的地图标绘方法包括基本图元绘 制、规则标号绘制、非规则标号绘制和标号控制。具体说明如下:

1、基本图元绘制:

所述基本图元包括线段、折线、圆、圆弧、椭圆和文字,图元属性包括颜 、填充样式和线型。其绘制的过程如图3所示,具体包括:

步骤s301,根据决定基本图元形状的操作数计算基本图元的上下左右边 界;

所述操作数和图元属性在数据库中的存储结构如表1所示。

表1



以椭圆为例,操作数包括中心点坐标、横向半轴和纵向半轴。

步骤s302,根据所述操作数计算绘图轨迹,并将绘图轨迹存储到安卓绘图 接口提供的android.graphics.Path类中。

步骤s303,在绘图(draw)方法中根据所述图元属性创建画笔,并将绘图 轨迹绘制到画布上。主要代码如下:


2、规则标号绘制:

规则标号由一个或多个图元聚合而成,因此,本实施例中规则标号绘制是 以递归的方式分别绘制组成所述标号的所有图元。其绘制的过程包括:

(1)当所述规则标号由多个子图元构成时,分别递归调用子图元的绘图 方法;

(2)当所述规则标号是基本图元时,进行基本图元绘制。

主要代码如下:



3、非规则标号绘制:

非规则标号中几何形状不固定的部分不能像规则标号那样用图元数据来 描述,需要根据组成该标号的几何形状分别采用特定绘制算法实现。尽管非规 则标号中几何形状不固定部分的形状、大小各异,但几何结构特征有些是相同 的。据此,可以把含有不固定部分的非规则标号分为闭曲线、开曲线、法线、 箭头、填充五大类,绘制这几类非规则几何形状需要用到B样条函数、曲线等 间距分割算法、求曲线上某点法线斜率算法、箭头画法、闭域内填充平行线段 算法等,上述算法为现有技术的通用算法,在此不一一赘述。

4、标号控制:

标号控制是指通过移动标号控制点对标号进行平移、缩放和旋转、形状变 换。所述规则标号的控制点包括平移控制点、缩放控制点和旋转控制点;所述 非规则标号的控制点包括平移控制点、缩放控制点、旋转控制点、形状控制点 和定位点。所述标号控制的过程如图4所示,包括以下步骤:

步骤s401,通过安卓系统提供的OnTouchDown回调函数捕获屏幕上的触 摸事件,并记录事件发生的屏幕坐标;

步骤s402,触摸动作发生后,调用Marking类的hitTest方法遍历标号的所 有控制点,当存在某个控制点,使得触屏位置在所述控制点的有效区域内时, 通过回调函数返回所述控制点,如果不存在该控制点,则忽略此次屏幕触摸动 作。主要实现代码如下:



本实施例中,通过安卓绘图接口提供的android.graphics.Region类的 contains方法判断触屏位置是否在控制点有效区域内。主要实现代码如下:


步骤s403,通过Marking类的hitTest方法判断触屏位置在某控制点的有效 区域内后,在的回调函数中缓存当前选中的控制点对象。主要实现代码 如下:


步骤s404,通过安卓系统提供的OnTouchMove回调函数捕获屏幕滑动事 件,记录滑动事件发生位置的屏幕坐标;

步骤s405,调用控制点的moveTo方法将屏幕滑动事件传递给当前选中的 控制点对象。主要实现代码如下:



步骤s406,所述控制点对象将屏幕滑动事件传递给标号对象(上层容器)。 主要实现代码如下:


步骤s407,标号对象接收到控制点移动事件后,根据被移动控制点的类型 对本标号进行平移、缩放、旋转和/或形状变换操作,并将操作后的标号重新绘 制到画布上。

采用本发明基于安卓操作系统的地图标绘方法及系统,开发人员无须关心 Android操作系统底层绘图机制就可以方便、高效地在Android移动终端上进 行地图标绘系统开发,不仅节约了开发成本,也大大降低了地图与地图标绘之 间的耦合度,提高了软件的可维护性。

另外,当已有的图元不能提供满足用户要求的标号时,本发明可以通过继 承AbstractDrawItem或AbstractIrregularMark虚基类来分别对基本图元和非规 则标号进行扩充,从而达到动态扩展新标号的目的。

尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将 意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上 述实施例。

本文发布于:2024-09-25 15:26:08,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/74443.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议