《一种地图覆盖物区域渲染方法及相关设备.pdf》由会员分享,可在线阅读,更多相关《一种地图覆盖物区域渲染方法及相关设备.pdf(18页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201410842652.X (22)申请日 2014.12.30 201410727275.5 2014.12.04 CN G06F 17/30(2006.01) G06F 9/44(2006.01) G06F 9/50(2006.01) (71)申请人 中移全通系统集成有限公司 地址 050021 河北省石家庄市青园街 220 号 (72)发明人 牛昆亮 曹雪峰 孙海涛 武海斌 沈煜 冯振川 (74)专利代理机构 北京驰纳智财知识产权代理 事务所 ( 普通合伙 ) 11367 代理人 孙海波 (54) 发明名称 一种地图覆盖物区域渲染。
2、方法及相关设备 (57) 摘要 本发明提供了一种地图覆盖物区域渲染方法 及相关设备。本发明采用覆盖物动态加载渲染技 术, 通过定义焦点视图范围, 来管理覆盖物的创建 与销毁, 可以实现内存与运算资源的合理分配利 用。 将浏览器视野范围外的无用覆盖物进行销毁, 实现有目的的部分销毁, 而不是统一全部销毁, 减 少系统中内存与 CPU 资源占用 , 同时也使系统的 销毁更灵活。及时加载用户视野范围内未加载覆 盖物, 在降低消耗的同时保证提供给用户最真实 的可视化信息。 (66)本国优先权数据 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书。
3、10页 附图5页 (10)申请公布号 CN 104504106 A (43)申请公布日 2015.04.08 CN 104504106 A 1/2 页 2 1.一种地图覆盖物区域渲染系统, 包括地图, 其特征在于, 还包括渲染器管理单元、 渲 染器、 覆盖物图层实例管理单元 ; 所述渲染器分别与所述渲染器管理单元和所述覆盖物图 层实例管理单元相连接, 所述覆盖物图层实例管理单元还与所述地图相连接 ; 所述渲染器管理单元用于对所述渲染器进行管理, 负责各渲染器调配 ; 所述渲染器用于对图层和 / 或覆盖物进行渲染 ; 所述覆盖物图层实例管理单元用于向地图上添加或删除所述覆盖物, 更新覆盖物信息 。
4、与位置, 对覆盖物进行本地存储与管理。 2.如权利要求 1 所述的地图覆盖物区域渲染系统, 其特征在于, 所述地图覆盖物区域 渲染系统还包括通信模块, 当渲染事件由定时位置信息推送引发的涂层信息变更时, 触发 所述通信模块 ; 所述通信模块接收到后台推送过来的信息后, 对其进行相应的处理转换, 将 信息保存到本地存储中。 3.如权利要求 1 所述的地图覆盖物区域渲染系统, 其特征在于, 所述覆盖物是添加到 地图中内容的统称 ; 包括矢量图形元素、 文字标注、 图片、 信息窗口。 4. 一种渲染器管理单元, 包括 : 查找模块和切换模块, 所述查找模块用于寻找合适的渲染器 ; 所述切换模块用于切。
5、换渲染器和图层。 5.一种渲染器, 包括转接模块和渲染模块, 所述转接模块, 用于图层和不同地图 API 适配转换工作 ; 所述渲染模块, 用于对图层及图层上覆盖物进行渲染。 6. 一种覆盖物图层实例管理单元, 用于对覆盖物进行本地存储和管理, 包括遍历模 块、 添加模块、 更新模块和销毁模块, 所述遍历模块分别与添加模块、 更新模块和销毁模块 相连接 ; 所述遍历模块, 用于遍历所述覆盖物信息 ; 所述添加模块, 将所述覆盖物添加到地图中 ; 所述更新模块, 更新所述覆盖物的相关信息和所述覆盖物的可视化图像 ; 所述销毁模块, 用于销毁所述覆盖物所述覆盖物的相关信息和所述覆盖物的可视化图 像。
6、。 7. 一种地图覆盖物区域渲染方法, 包括 : 渲染器管理单元接收到通信模块推送的消息后和 / 或监听地图事件接收到事件触发 后, 通过对比推送消息或事件和渲染器的方法名, 如果相同, 则选用所述渲染器, 如不同则 切换下一个渲染器进行对比, 直至找到合适的渲染器 ; 找到所述合适的渲染器后, 先判断其与上次渲染所用渲染器是否相同, 如果相同则不 对图层进行处理, 如果不同则销毁当前图层, 添加新图层。 8.一种地图覆盖物区域渲染方法, 包括 : 被渲染器管理单元选中的渲染器, 显示其相对应的图层的展示方法, 将接收自所述渲 染器管理单元的参数传送给覆盖物图层实例管理单元。 9. 一种地图覆。
7、盖物区域渲染方法, 包括 : 覆盖物图层实例管理单元遍历覆盖物相关信息, 对每个所述覆盖物的相关信息操作如 下, 权 利 要 求 书 CN 104504106 A 2 2/2 页 3 判断是即时订阅产生的响应还是定时订阅产生的响应 ; 如果是所述即时订阅, 则判断是否已被渲染, 如果未被渲染, 则先初始化所述覆盖物、 将所述覆盖物信息 id 保存到本地存储数组 中、 将所述覆盖物信息 id 和所述覆盖物保存到本地存储对象中, 将所述覆盖物保存到当前 视图覆盖物数组中, 如果已被渲染, 则更改所述覆盖物的位置和相关信息, 更新所述覆盖物在地图上的可 视化图像, 如果是所述定时订阅产生的响应, 则。
8、判断覆盖物是否已被渲染, 如果未被渲染, 初始化所述覆盖物, 将所述覆盖物信息 id 保存到本地存储数组中, 将 所述覆盖物信息 id 和所述覆盖物保存到本地存储对象中, 再判断所述覆盖物是否在当前 视图的扩大图中 如果在, 则将所述覆盖物保存到当前视图覆盖物数组中, 如果不在, 则不进行任何操作 ; 如果已被渲染, - 则判断是否在当前视图的扩大图中, 如果在所述扩大图中, 则更改所述覆盖物的位置和相关信息, 更新所述覆盖物在地图 上的可视化图像, 并将所述覆盖物保存到当前视图覆盖物数组中, 如果不在所述扩大图中, 则从当前视图上中销毁此覆盖物, 并将其从当前视图对象和 数组中删除 ; 遍历。
9、所有所述覆盖物信息后, 批量添加所述当前视图覆盖物数组中的覆盖物到地图 上, 再一次遍历所述当前视图覆盖物数组, 对覆盖物相关信息进行绑定。 10.如权利要求 9 所述的一种地图覆盖物区域渲染方法, 其特征在于, 将所述覆盖物信 息 id 和所述覆盖物保存到本地存储对象中的保存形式为键值对。 权 利 要 求 书 CN 104504106 A 3 1/10 页 4 一种地图覆盖物区域渲染方法及相关设备 技术领域 0001 本发明涉及电子地图领域, 尤其涉及一种地图覆盖物区域渲染方法及其系统内对 象。 背景技术 0002 WEB-GIS(网络地理信息系统)指基于Internet平台, 客户端应用软。
10、件采用网络协 议, 运用在 Internet 上的地理信息系统。一般由多主机, 多数据库和多个客户端以分布式 形式连接在 Internet 上而组成。 0003 在 Web-GIS 应用中, 所有叠加或覆盖到地图的内容, 我们统称为地图覆盖物。如标 注、 矢量图形元素 ( 包括 : 折线、 多边形和圆 )、 信息窗口等。覆盖物拥有自己的地理坐标, 当手动拖动或缩放地图时, 它们会根据在地图上相应的坐标位置与地图变动后像素转换进 行二次渲染, 此渲染是地图自动记忆位置然后运用算法进行渲染。我们会在地图中通过添 加各种不同的覆盖物, 来标示出实际物体在地图上的位置, 使展现更贴近于现实。 0004。
11、 在现有技术方案中, 当地图移动或缩放等事件触发时, 不会存在人工对地图上的 覆盖物进行管理, 即使地图发生了移动使覆盖物不可见, 覆盖物也不会被销毁, 或者是地图 变动后又有新的覆盖物需在此视图上显示, 地图也不会自动去监测并进行添加。地图只会 将变动前添加到它上面的覆盖物进行记忆保存, 待地图变动后运用相应算法进行二次渲 染。 因此, 只有通过手动刷新页面或清空操作才能销毁所有覆盖物, 而此销毁操作是极端的 操作, 不能按照特定意愿去进行相应销毁操作。 0005 在现有技术方案中, 随着数据量的增大, 添加到地图上的覆盖物越来越多, 这些覆 盖物占用了系统中大量的内存与 CPU 资源, 而。
12、用户在多数情况并不需要同时看到所有的覆 盖物, 这时处于浏览器视野范围外的覆盖物的信息就会成为无用的数据。由于地图上的覆 盖物过多, 用户在使用该系统的过程中, 内存与 CPU 都处于高负荷状态。当覆盖物数量达到 一定规模后, 会占用用户客户端中更多的内存空间与 CPU 资源, 最终导致浏览器卡顿甚至 崩溃, 使得用户在使用该类系统时出现较差的用户体验。 除此之外, 当用户拖动地图或缩放 地图时, 地图发生相应变动, 而现有技术方案调用的是地图自恢复方法, 地图每移动一次其 内部就会又重新渲染一次之前记忆中的所有覆盖物。而如果用户操作频繁, 地图就会一直 不停地工作, 给地图带来的负载与工作量。
13、非常大, 从而进一步增加了内存空间与 CPU 资源 的占用, 同时也进一步降低了用户体验。 0006 当前, 现有技术的缺点是, 地图负载较大, 内存与 CPU 资源的占用过高。本发明采 用一种地图覆盖物区域渲染算法, 旨在使用渲染算法识别无用的覆盖物数据并进行删除, 添加当前视图内需展示但未渲染资源, 从而在展现最真实数据给用户的同时减少系统占用 内存与 CPU 资源。 发明内容 0007 本发明主要是为了解决上述技术问题, 提供一种地图覆盖物区域渲染系统, 包括 说 明 书 CN 104504106 A 4 2/10 页 5 地图, 其特征在于, 还包括渲染器管理单元、 渲染器、 覆盖物图。
14、层实例管理单元 ; 所述渲染器 分别与所述渲染器管理单元和所述覆盖物图层实例管理单元相连接, 所述覆盖物图层实例 管理单元还与所述地图相连接 ; 0008 所述渲染器管理单元用于对所述渲染器进行管理, 负责各渲染器调配 ; 0009 所述渲染器用于对图层和 / 或覆盖物进行渲染 ; 0010 所述覆盖物图层实例管理单元用于向地图上添加或删除所述覆盖物, 更新覆盖物 信息与位置, 对覆盖物进行本地存储与管理。 0011 优选的是, 所述地图覆盖物区域渲染系统还包括通信模块, 当渲染事件由定时位 置信息推送引发的涂层信息变更时, 触发所述通信模块 ; 所述通信模块接收到后台推送过 来的信息后, 对。
15、其进行相应的处理转换, 将信息保存到本地存储中。 0012 在上述任一方案中优选的是, 所述覆盖物是一种图文信息, 添加到地图上表示现 实中某个实物, 所述覆盖物信息包括文字信息和图像信息。 0013 在上述任一方案中优选的是, 所述覆盖物是添加到地图中内容的统称 ; 包括矢量 图形元素、 文字标注、 图片、 信息窗口。 0014 本发明还提供一种渲染器管理单元, 包括 : 查找模块和切换模块, 0015 所述查找模块用于寻找合适的渲染器 ; 0016 所述切换模块用于切换渲染器和图层。 0017 优选的是, 所述查找模块还包括 : 渲染器循环链表 , 所述渲染器循环链表中按一 定顺序排列渲染。
16、器 ; 在所述渲染器管理单元的所述查找模块查找合适的渲染器时, 按照所 述渲染器循环链表中的顺序查找。 0018 在上述任一方案中优选的是, 所述渲染器循环链表最后一个为通用渲染器, 所述 通用渲染器无条件渲染 ; 当其他每个渲染器都无法渲染时, 调用通用渲染器进行渲染。 0019 本发明还提供一种渲染器, 包括转接模块和渲染模块, 0020 所述转接模块, 用于图层和不同地图 API 适配转换工作 ; 0021 所述渲染模块, 用于对图层及图层上覆盖物进行渲染。 0022 本发明还提供一种覆盖物图层实例管理单元, 用于对覆盖物进行本地存储和管 理, 包括遍历模块、 添加模块、 更新模块和销毁。
17、模块, 所述遍历模块分别与添加模块、 更新模 块和销毁模块相连接 ; 0023 所述遍历模块, 用于遍历所述覆盖物信息 ; 0024 所述添加模块, 将所述覆盖物添加到地图中 ; 0025 所述更新模块, 更新所述覆盖物的相关信息和所述覆盖物的可视化图像 ; 0026 所述销毁模块, 用于销毁所述覆盖物所述覆盖物的相关信息和所述覆盖物的可视 化图像。 0027 本发明还提供一种地图覆盖物区域渲染方法, 其特征在于, 包括 : 0028 渲染器管理单元接收到通信模块推送的消息后和 / 或监听地图事件接收到事件 触发后, 通过对比推送消息或事件和渲染器的方法名, 如果相同, 则选用所述渲染器, 如。
18、不 同则切换下一个渲染器进行对比, 直至找到合适的渲染器 ; 0029 找到所述合适的渲染器后, 先判断其与上次渲染所用渲染器是否相同, 如果相同 则不对图层进行处理, 如果不同则销毁当前图层, 添加新图层。 说 明 书 CN 104504106 A 5 3/10 页 6 0030 优选的是, 所述渲染器管理单元先查找上一次使用的渲染器 ; 如果首次调用所述 渲染器管理单元, 则根据渲染器循环链表中的顺序, 依次查找合适的渲染器。 0031 在上述任一方案中优选的是, 如果所有渲染器都不符合条件, 则选择通用渲染器。 0032 在上述任一方案中优选的是, 所述销毁当前图层, 添加新图层包括将上。
19、一图层的 数据和接收到的新数据做并集, 组成最新一图层的渲染数据 ; 所述渲染管理对象接收到上 一图层的图层信息后, 所述上一图层自行销毁本图层信息 ; 所述最新一图层的渲染数据作 为参数传送给渲染器渲染方法。 0033 本发明还提供一种地图覆盖物区域渲染方法, 其特征在于, 包括 : 0034 被渲染器管理单元选中的渲染器, 显示其相对应的图层的展示方法, 将接收自所 述渲染器管理单元的参数传送给覆盖物图层实例管理单元。 0035 本发明还提供一种地图覆盖物区域渲染方法, 其特征在于, 包括 : 0036 覆盖物图层实例管理单元遍历覆盖物相关信息, 对每个所述覆盖物的相关信息操 作如下, 0。
20、037 判断是即时订阅产生的响应还是定时订阅产生的响应 ; 0038 如果是所述即时订阅, 则判断是否已被渲染, 0039 如果未被渲染, 则先初始化所述覆盖物、 将所述覆盖物信息 id 保存到本地存储数 组中、 将所述覆盖物信息 id 和所述覆盖物保存到本地存储对象中, 将所述覆盖物保存到当 前视图覆盖物数组中, 0040 如果已被渲染, 则更改所述覆盖物的位置和相关信息, 更新所述覆盖物在地图上 的可视化图像, 0041 如果是所述定时订阅产生的响应, 则判断是否已被渲染, 0042 如果未被渲染, 初始化所述覆盖物, 将所述覆盖物信息 id 保存到本地存储数组 中, 将所述覆盖物信息 i。
21、d 和所述覆盖物保存到本地存储对象中, 再判断是否在当前视图的 扩大图中 0043 如果在, 则将所述覆盖物保存到当前视图覆盖物数组中, 0044 如果不在, 则不进行任何操作 ; 0045 如果已被渲染, 则判断是否在当前视图的扩大图中, 0046 如果在所述扩大图中, 则更改所述覆盖物的位置和相关信息, 更新所述覆盖物在 地图上的可视化图像, 并将所述覆盖物保存到当前视图覆盖物数组中 ; 0047 如果不在所述扩大图中, 则从当前视图中销毁此覆盖物, 并将其从当前视图对象 和数组中删除 ; 0048 遍历所有所述覆盖物信息后, 批量添加所述当前视图覆盖物数组中的覆盖物到地 图上, 再一次遍。
22、历所述当前视图覆盖物数组, 对覆盖物相关信息进行绑定。 0049 优选的是, 将所述覆盖物信息 id 和所述覆盖物保存到本地存储对象中的保存形 式为键值对。 0050 在上述任一方案中优选的是, 所述操作2为将所述覆盖物信息id保存到本地存储 数组中。 0051 在上述任一方案中优选的是, 所述当前视图的扩大图为当前视图范围扩大 1/4 后 的视图。 说 明 书 CN 104504106 A 6 4/10 页 7 0052 本发明还提供一种地图覆盖物区域渲染方法, 当地图被移动距离大于当前视图范 围的 1/8 时, 其特征在于, 包括 : 0053 图层类实例对象遍历覆盖物相关信息, 将最新视。
23、图范围内的覆盖物和上一视图范 围已加载的覆盖物作交集, 处于交集范围内的所述覆盖物不做处理, 加载渲染位置在所述 最新视图内的覆盖物, 并将所述覆盖物的信息添加到本地存储对象中 ; 删除渲染位置在所 述上一视图而不在所述最新视图范围内的所属覆盖物, 并将所述覆盖物信息从本地存储对 象中删除。 0054 与现有技术相比, 本发明采用覆盖物动态加载渲染技术, 通过定义焦点视图范围, 来管理覆盖物的创建与销毁, 可以实现内存与运算资源的合理分配利用。将浏览器视野范 围外的无用覆盖物进行销毁, 实现有目的的部分销毁, 而不是统一全部销毁, 减少系统中内 存与CPU资源占用,同时也使系统的销毁更灵活。 。
24、及时加载用户视野范围内未加载覆盖物, 在降低消耗的同时保证提供给用户最真实的可视化信息。 附图说明 0055 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图是本发明 的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下, 还可以根 据这鞋附图获得其他的附图。 0056 图 1 是按照本发明的地图覆盖物区域渲染方法的实施例 1 的流程图 ; 0057 图 2 是按照本发明的地图覆盖物区域渲染方法的实施例 1 的序列图 ; 0058 图 3 是按照本发明的地图覆盖物区域渲染方。
25、法的实施例 1 中步骤 7 的流程图 ; 0059 图 4 是按照本发明的地图覆盖物区域渲染方法的实施例 1 的当前视图的示意图 ; 0060 图 5 是按照本发明的地图覆盖物区域渲染方法的实施例 2 的流程图 ; 0061 图 6 是按照本发明的地图覆盖物区域渲染方法的实施例 2 的序列图 ; 0062 图 7 是按照本发明的地图覆盖物区域渲染方法实施例 2 的当前视图的示意图。 具体实施方式 0063 下面结合附图和优选的实施方式对本发明作进一步详细描述。 权利要求中构成要 件和实施例中具体实例之间的对应关系可以如下例证。 这里的描述意图在于确认在实施例 中描述了用来支持在权利要求中陈述的。
26、主题的具体实例, 由于在实施例中描述了实例, 不 意味着该具体实例不表示构成要件。相反地, 即使在此包含了具体实例作为对应一个构成 要件的要素特征, 也不意味着该具体实例不表示任何其它构成要件。 0064 此外, 这里的描述不意味着对应于实施例中陈述的具体实例的所有主题都在权利 要求中引用了。换句话说, 这里的描述不否认这种实体, 即对应实施例包含的具体实例, 但 不包含在其任何一项权利要求中, 即, 能够在以后的修正被分案并申请、 或增加的可能的发 明的实体。 0065 应当注意的是,“系统” 在此意味着由两个或更多设备构成的处理。 0066 “网络” 意味着至少连接了两个设备的机构, 并且。
27、在其中, 一条信息能够从一个设 备发送到另一个设备。经由网络建立通信的设备可以是彼此分离的, 也可以是构成一个机 说 明 书 CN 104504106 A 7 5/10 页 8 器的内部模块。 0067 “通信” 可表示无线通信和有线通信。然而, 还可以是混合无线和有线通信的通信, 更具体地, 在某个区段采取无线通信而在另一个区段采取有线通信的通信。 同样, 它也可以 是这样的通信 : 从一个设备向另一设备的通信是有线的, 且相反方向的通信是无线的。 0068 为了进一步解释本发明的技术方案, 下面通过具体实施例来对本发明进行详细阐 述。 0069 区域渲染广义地讲是利用从设备上获取的数据, 。
28、对其进行转义, 再对信息进行遍 历检索, 将数据按照用户更好理解的图像进行可视化显示, 在地图上相应位置添加覆盖物 来代表现实中的实物, 同时也可以给相应实物绑定信息窗口来展示实物相关联信息。 0070 本发明的实现是通过模块化思想从信息获取到最后渲染逐步与分块的方式完成 分工合作。 涉及到的一些模块列举出了下面具体介绍本发明实现方案时所涉及到系统中的 模块、 类和对象。 0071 本发明区域渲染执行过程相关对象包括 : 通信模块、 渲染器管理单元、 渲染器、 图 层管理类、 覆盖物图层实例管理单元、 地图、 当前视图对象、 覆盖物。 0072 通信模块 : 通信模块是底层数据模块, 是接收位。
29、置信息并进行格式转换和控制数 据流转的模块, 通过 Ajax 请求并接收数据, 然后对数据进行处理操作。 0073 渲染器管理单元 : 此对象是对各渲染器进行管理的对象, 主要负责各渲染器的调 配工作。通过监听地图事件, 接收到事件触发后, 配备渲染器切换转接工作。然后通过比较 判定, 当需要更新视图时完成渲染主调工作。 同时也是其他模块调用当前图层的中介者, 来 将当前图层的相关信息返回给调用模块, 完成调用模块与当前视图图层的交互任务。 0074 渲染器 : 本系统中有多个渲染器, 它们同时存放在一个队列中。 每个渲染器都继承 自同一个基类, 拥有一些共同的方法和属性, 但同时也有自己的扩。
30、展点。 每个渲染器对应着 一个图层种类, 一个图层种类可能对应着一个或一个以上渲染器, 但是一个渲染器有且仅 能有相对应的一个图层种类。渲染器负责渲染工作以及图层和其他模块的数据转接工作 , 是通信模块和图层模块的桥接器。 0075 图层管理类 : 主要是对地图上各图层进行统一管理的一个对象。各图层在初始化 时向图层管理类进行注册, 就可以通过图层管理类来获取各图层对象, 调用其公开方法。 渲 染图层可以通过图层管理类来监控其他类型图层, 从而决定渲染与否或渲染后是否可见。 0076 覆盖物图层实例管理单元 : 根据用户需求添加覆盖物图层实例管理单元种类, 此 对象主要负责与地图之间的交互工作。
31、, 根据条件向地图上添加覆盖物或删除覆盖物, 实时 更新覆盖物绑定信息与位置, 对覆盖物进行本地存储与管理, 处理订阅和取消订阅的最上 层工作。区域渲染的粘合体, 最终又回到了视图上, 将整个流程折成环状。 0077 地图 : 地图是本发明实现的载体, 同时也是服务的终结者, 一切工作的最终调用对 象都是地图。 通过调用地图对象的方法来实现覆盖物的呈现与销毁, 在新信息到达时, 进行 图层更新。 0078 当前视图对象 : 当前视图对象是地图对象的一部分, 由地图级别来决定其大小, 是 在用户视觉范围内的那一部分, 是实现本发明关键点的载体。通过当前视图界限与覆盖物 位置来判定是否销毁地图已加。
32、载覆盖物, 或是添加需显示而未加载的覆盖物。 在本发明中, 将实际中当前视图扩大四分之一作为当前视图。 在销毁或添加时将当前视图扩大八分之一 说 明 书 CN 104504106 A 8 6/10 页 9 后作为当前视图。 0079 覆盖物 : 图标, 加载到地图上来代表某个现实中的具体实物, 可以有图片也可以有 文字。可以把它添加到地图某个对应位置, 将其位置和地图上经纬度点进行绑定。 0080 实施例 1 : 当定时位置信息推送引发的图层信息变更时。 0081 图1为一种地图覆盖物区域渲染方法一优选实施例的流程图, 如图1所示, 本实施 例的方法可以包括 : 0082 图 2 为一种地图覆。
33、盖物区域渲染方法一优选实施例的序列图 ; 0083 图 4 是本发明地图覆盖物区域渲染方法实施例一当前视图的示意图 ; 0084 定时位置信息推送是通过客户端定时发送位置请求而引发的响应, 此种情况和用 户订阅操作相关, 返回数据也和用户订阅信息相对应 ( 排除未知信息, 如若为未知信息, 返 回空数组 ), 而和用户对地图操作无关。当新的定时订阅信息传来时, 将根据信息对图层进 行重新规整, 更新, 保持将最新信息在地图上进行可视化显示。 0085 具体的 0086 步骤 1, 用户通过操作订阅需求信息, 此需求信息便是各覆盖物相关信息最初接收 到客户端的形式。 通信模块接收到后台推送过来的。
34、信息后, 对其进行相应的处理转换, 将数 据保存到本地存储中, 以便及时查取, 减少后台交互次数与信息交互量。 0087 步骤 2, 步骤 1 中转换后的信息在不同的需求下, 被应用的场景有所不同, 所以本 发明中定义了一个分发器, 将信息交由分发器处理, 分发的其中一条线路便是位置信息渲 染线路。此线路下信息会被传送给渲染器管理单元。 0088 步骤 3, 查找合适渲染器。渲染器管理单元接收到信息后, 先去渲染器循环链表中 查找合适渲染的渲染器。第一个查找对象便是上一次使用的渲染器, 如果是首次调用渲染 器管理单元, 则渲染器循环链表中的首个便是第一个查找对象。所有渲染器都共同继承了 一个基。
35、类渲染器, 基类渲染器规定了渲染器的基本任务与规范。渲染器管理单元通过对比 推送消息或事件和渲染器的方法名, 来找寻合适的渲染器进行渲染。查找按照循环链表顺 序查找。渲染器管理单元找到符合条件的渲染器后将停止向下查找, 待下一次渲染时从此 位置向下继续查找。在循环链表的尾部有一个通用渲染器, 通用渲染器条件宽泛或无条件 渲染。如果其他渲染器都无法渲染的话, 调用通用渲染器进行渲染。除通用渲染器外, 每个 渲染器都有相应的一个条件, 这个条件是和地图缩放级别相关, 可以根据不同的客户需求, 定义不同的条件, 添加不同的渲染器。根据本发明的搭建的框架, 只需添加一个渲染器然 后将其插进渲染器循环队。
36、列中, 完成注册即可, 不需改动原程序中代码, 紧密附和了开闭原 则, 实现对扩展开放、 对修改关闭。 0089 步骤 4, 确定最终渲染信息, 做渲染前调用准备工作。通过步骤 3 找到合适的渲染 器后, 渲染器管理单元首先判断该渲染器与上次渲染所用渲染器是否相同, 因为每个渲染 器有且仅能和一种渲染图层相对应, 渲染器相同, 则图层相同。 图层相同则不需销毁当前图 层然后添加新图层, 完成图层的替换。如果是不同的渲染器, 则要考虑图层的替换工作。替 换工作的基础数据需由上一图层数据和接收到的数据做并集, 共同组成最新一图层的渲染 数据。上一图层将其图层信息传送给渲染器管理单元后, 自行销毁本。
37、图层信息。渲染器管 理单元将上一图层数据和接收到的数据做并集作为本次渲染的参数传给渲染器渲染方法。 0090 步骤5, 渲染器渲染调用图层展示。 渲染器的渲染方法是调用其相对应图层的展示 说 明 书 CN 104504106 A 9 7/10 页 10 方法, 将接收到的参数传给展示方法。 0091 步骤 6, 当前图层范围界定。访问当前视图管理对象, 获得当前视图的范围, 将其 范围扩大四分之一后作为要渲染的当前视图, 此种方案较保险, 防止较小幅度移动地图查 看当前视图边缘覆盖物, 其周边存在信息却无覆盖物添加到地图上, 容易让用户产生错觉 和误解。所以, 为了达到更好的用户体验, 同时也。
38、要保证达到发明目的, 故用此方案。如图 4 所示, 为当前视图做图示解义。 0092 步骤 7, 遍历覆盖物信息并渲染到地图上。遍历步骤 5 传送的覆盖物相关信息。判 定是及时订阅产生的响应还是定时订阅产生的响应, 如果是即时订阅, 则直接判定是否已 被渲染, 如果未被渲染, 则初始化覆盖物, 将其所对应信息的 id 保存到本地数组和当前视 图数组中, 同时将其信息保存到本地对象和当前视图对象中, 以键值对的形式, 键值分别 为信息 id 和覆盖物。同时将覆盖物保存到当前视图覆盖物数组中。如果已经被渲染, 则根 据最新信息更改覆盖物位置和其相关信息, 并更新其在地图上的可视化图像。如果是定时 。
39、订阅引发的响应, 则再判定是否已被渲染后判定其位置是否在步骤 6 中所扩展的当前视图 内, 如果在, 则执行和即时订阅此种情况相同处理, 如果不在, 则不将其保存在当前视图覆 盖物数组中。如果已经被渲染, 也要判定覆盖物是否在步骤 6 中所计算的扩展的当前视图 范围内, 如果在, 则更新覆盖物位置和其相关信息, 并更新其在地图上的可视化图像。如果 不在, 则更新覆盖物位置和其相关信息, 将其从当前视图中销毁, 并将其从当前视图对象和 数组中删除。继续遍历, 直到遍历结束。然后将当前视图覆盖物数组中的覆盖物批量添加 到地图上, 至此完成可视化图像的显示。 由于本发明中不仅是展示覆盖物图像, 同时。
40、也要绑 定其相关信息, 而相关信息又不能在渲染到地图上之前进行绑定, 只能渲染到地图上, 成为 其上的一个图层之后才能进行绑定。 基于此, 而又考虑地图图层加载的效率, 只能再进行一 次遍历, 然后执行绑定操作, 实现信息绑定功能。至此, 地图覆盖物渲染和覆盖物信息绑定 已完成。本步骤实现流程如图 3 所示。 0093 图 3 本发明地图覆盖物区域渲染方法实施例一步骤 7 的流程图 ; 0094 详细描述一下步骤 7 : 0095 覆盖物图层实例管理单元遍历覆盖物相关信息, 对每个所述覆盖物的相关信息操 作如下, 0096 判断是即时订阅产生的响应还是定时订阅产生的响应 ; 0097 如果是所。
41、述即时订阅, 则判断是否已被渲染, 0098 如果未被渲染, 则先初始化所述覆盖物、 将所述覆盖物信息 id 保存到本地存储数 组中、 将所述覆盖物信息 id 和所述覆盖物保存到本地存储对象中, 将所述覆盖物保存到当 前视图覆盖物数组中, 0099 如果已被渲染, 则更改所述覆盖物的位置和相关信息, 更新所述覆盖物在地图上 的可视化图像, 0100 如果是所述定时订阅产生的响应, 则判断是否已被渲染, 0101 如果未被渲染, 初始化所述覆盖物, 将所述覆盖物信息 id 保存到本地存储数组 中, 将所述覆盖物信息 id 和所述覆盖物保存到本地存储对象中, 再判断是否在当前视图的 扩大图中 01。
42、02 如果在, 则将所述覆盖物保存到当前视图覆盖物数组中, 说 明 书 CN 104504106 A 10 8/10 页 11 0103 如果不在, 则不进行任何操作, 0104 如果已被渲染, 则判断是否在当前视图的扩大图中, 0105 如果在所述扩大图中, 则更改所述覆盖物的位置和相关信息, 更新所述覆盖物在 地图上的可视化图像, 并将所述覆盖物保存到当前视图覆盖物数组中 ; 0106 如果不在所述扩大图中, 则从当前视图上销毁次覆盖物, 并将其从当前视图对象 和数组中删除 ; 0107 遍历所有所述覆盖物信息后, 批量添加所述当前视图覆盖物数组中的覆盖物到地 图上, 再一次遍历所述当前视。
43、图覆盖物数组, 对覆盖物相关信息进行绑定。 0108 图 4 是本发明地图覆盖物区域渲染方法实施例一当前视图的示意图 ; 0109 实施例 2 : 当地图事件触发引发的视野图层界限变更 0110 图 5 是本发明地图覆盖物区域渲染方法实施例二的流程图 ; 0111 图 6 是本发明地图覆盖物区域渲染方法实施例二的序列图 ; 0112 图 7 是本发明地图覆盖物区域渲染方法实施例二当前视图的示意图 ; 0113 地图事件触发引发视图变更, 第一种情况是当用户拖动地图, 拖动距离超过当前 视图的八分之一即触发本发明中定义的监听事件地图移动事件。 第二种情况是当用户 放大缩小地图时, 视图从经纬度上。
44、看, 整个范围就会发生变化, 在此范围内的覆盖物数量有 可能发生变化, 所以需要更新, 即触发本发明中定义的监听事件地图缩放级别改变事 件。 以上两种情况, 都有一个延迟时间控制, 当前后事件触发请求过于频繁时, 只触发后者, 前者不作处理, 降低地图操作次数, 提高效率, 给予用户良好体验效果。 0114 具体如下 : 0115 步骤 1, 当用户拖动地图使地图移动距离大于当前视图范围的八分之一时, 如图 7 所示(此运算的单位是像素), 将触发本发明中监听的地图移动事件。 当用户放大缩小地图 使地图级别改变时, 将触发本发明中监听的地图缩放级别改变事件。 以上两个事件, 都设置 了延迟触发。
45、操作, 当前后事件触发请求过于频繁时, 只触发后者, 前者不作处理, 降低地图 操作次数, 提高效率。 0116 步骤 2, 渲染器管理单元监听到触发事件, 将执行上种情况的步骤 3 操作。 0117 步骤 3, 更新视图调用。找到合适的渲染器后, 首先取到上一渲染器图层管理中保 存到本地的覆盖物信息 ( 此信息是当前覆盖物最新信息集合 )。然后查看是否是相同渲染 器, 若渲染器不同, 则销毁上一图层, 执行步骤 4 操作。若渲染器相同, 则直接执行步骤 4 操 作。 0118 步骤 4, 调用图层的视图更新操作。 0119 步骤 5, 遍历覆盖物信息并过滤。图层对象类遍历接收到的覆盖物信息,。
46、 将最新视 图范围内的覆盖物和上一视图范围已加载覆盖物作交集处理, 处在交集范围内的则不做任 何处理, 然后加载渲染位置在最新视图内的覆盖物, 并将其信息添加到本地存储对象中, 删 除在变化前视图内而不在最新视图范围内的覆盖物, 并将其信息从本地存储对象中去除。 如表 1 所示, 列举的是上一视图的覆盖物信息, 如表 2 所示, 列举的是当前视图内覆盖物信 息, 如表 3 所示, 是合并处理后最终渲染结果。表 1 中的 marker1 和 marker4 存在于上一视 图, 而不在当前视图范围内, 所以要将它们从地图上销毁, 防止地图重绘时做无用功, 降低 地图负载。表 2 中的 marker。
47、1 和 marker2 是变动后视图新增的覆盖物点, 所以要将其初始 说 明 书 CN 104504106 A 11 9/10 页 12 化并加到地图图层上。表 1 中的 marker2 和表 2 中的 marker1, 表 1 中的 marker3 和表 2 中 的 marker2 相同, 故不需做处理, 减少工作量。 0120 表 1 上一视图覆盖物信息 0121 序号名称Id位置 1Markera1M134(116.33,34.64) 2Markera2M234(116.11,34.49) 3Markera3M132(116.23,34.78) 4Markera4M137(116.67,。
48、34.12) 0122 表 2 当前视图要显示覆盖物信息 0123 序号名称Id位置 1Markerb1M234(116.11,34.49) 2Markerb2M132(116.23,34.78) 3Markerb3M222(116.71,34.48) 4Markerb4M243(116.18,34.49) 0124 表 3 合并处理最终渲染结果 0125 序号名称Id位置操作 1Marker1M234(116.11,34.49)不作处理 2Marker2M132(116.23,34.78)不作处理 3Marker3M222(116.71,34.48)添加 4Marker4M243(116.1。
49、8,34.49)添加 1Markera1M134(116.33,34.64)销毁 0126 说 明 书 CN 104504106 A 12 10/10 页 13 4Markera4M137(116.67,34.12)销毁 0127 本发明采用覆盖物动态加载渲染技术, 通过定义焦点视图范围, 来管理覆盖物的 创建与销毁, 可以实现内存与运算资源的合理分配利用。将浏览器视野范围外的无用覆盖 物进行销毁, 实现有目的的部分销毁, 而不是统一全部销毁, 减少系统中内存与 CPU 资源占 用 , 同时也使系统的销毁更灵活。及时加载用户视野范围内未加载覆盖物, 在降低消耗的 同时保证提供给用户最真实的可视化信息。 0128 本领域技术人。