本发明专利技术公开了一种实现网页端地图编辑操作历史管理的方法,包括以下步骤:创建初始地图文档;将初始地图文档转换为不可变数据结构,得到初始地图版本;对初始地图版本进行属性编辑修改,记录被修改的属性;将被修改的属性与初始地图版本合并为一个不可变数据结构,得到一次操作历史;通过对不同的属性修改,获得多个操作历史,每个操作历史与上一个操作历史相比,只有被修改的属性发生了变化;查询操作历史,取出操作历史对应的地图版本,将地图版本转换为地图文档,利用地图引擎将地图文档进行恢复,得到历史地图,完成历史回溯;本发明专利技术有益效果是:兼具鲁棒性强和内存占用低的优点,实现近乎无限长度的操作历史管理以及流畅的跨版本回溯功能。的跨版本回溯功能。的跨版本回溯功能。
【技术实现步骤摘要】
一种实现网页端地图编辑操作历史管理的方法
[0001]本专利技术涉及网页电子地图管理领域,尤其涉及一种实现网页端地图编辑操作历史管理的方法。
技术介绍
[0002]随着互联网技术的快速发展,在网页端制作地图越来越普遍。地图通常由多个图层叠加生成,制作一幅完整的地图,需要对每个图层的符号、颜色、线型、字体等属性进行反复调整,因而涉及到的地图编辑操作非常多。在制作地图的过程中,难免会出现误操作,因此地图编辑器需要具备操作历史管理功能,实现编辑操作的撤销和重做。
[0003]目前实现操作历史管理通常有两种方式:版本管理法和操作录制法。
[0004]版本管理法为每一次地图编辑操作生成一个地图版本,通过地图版本回溯实现编辑操作的撤销和重做。版本管理法的优点是实现简单、鲁棒性强,能够方便地实现在操作历史序列中跳跃式前进和后退。由于任意一个属性值的修改都会生成一个完整的地图版本,随着地图编辑操作次数的增加,版本管理所需占用的内存也越来越大。而且网页是一个内存受限的运行环境,内存占用过大会导致版本回溯会越来越慢,影响使用体验。
[0005]操作录制法是通过记录每一次地图编辑操作步骤,通过操作步骤回溯实现编辑操作的撤销和重做。操作录制法仅记录一个初始地图版本和后续的编辑操作步骤,内存的占用不会随着地图编辑操作次数的增加有显著地增长,版本的回溯比较流畅。但是,由于历史回溯依赖于操作步骤序列的完整性,任一操作步骤的缺失将会导致该步骤之后的操作历史失效,所以操作录制法的鲁棒性较弱。
技术实现思路
[0006]为了针对上述问题,本专利技术提出一种在网页端实现高效操作历史管理的方法,该方法基于地图文档的持久化存储和不可变数据结构,兼具鲁棒性强和内存占用低的优点,实现近乎无限长度的操作历史管理以及流畅的跨版本回溯功能。
[0007]本专利技术提供一种实现网页端地图编辑操作历史管理的方法,包括以下步骤:
[0008]S1、创建初始地图文档;
[0009]S2、将初始地图文档转换为不可变数据结构,得到初始地图版本;
[0010]S3、对初始地图版本进行属性编辑修改,记录被修改的属性;
[0011]S4、将被修改的属性与初始地图版本合并为一个不可变数据结构,得到一次操作历史;
[0012]S5、通过对不同的属性修改,获得多个操作历史,每个操作历史与上一个操作历史相比,只有被修改的属性发生了变化;
[0013]S6、查询操作历史,取出操作历史对应的地图版本,将地图版本转换为地图文档,利用地图引擎将地图文档进行恢复,得到历史地图,完成历史回溯。
[0014]本专利技术提供的有益效果是:使用了不可变数据结构和结构共享来对地图的存储进
行了优化,从而使本专利技术方法兼具鲁棒性强和内存占用低的优点,实现近乎无限长度的操作历史管理以及流畅的跨版本回溯功能。
附图说明
[0015]图1是本专利技术方法的流程图;
[0016]图2是修改Vector trie数据的示意图;
[0017]图3是地图文档中进行属性修改的数据结构示意图;
[0018]图4是地图操作历史管理器的结构示意图;
[0019]图5是实现地图操作历史存储的流程示意图;
[0020]图6为本专利技术实施例中过程1~5的流程示意图;
[0021]图7是本专利技术实施例中过程6的示意图。
具体实施方式
[0022]为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地描述。
[0023]请参考图1,图1是本专利技术方法流程图。本专利技术提供了一种实现网页端地图编辑操作历史管理的方法,包括以下步骤:
[0024]S1、创建初始地图文档;
[0025]需要说明的是,本专利技术规定创建地图将会生成一个地图文档用来描述整个地图。所述初始地图文档包括呈现地图的视觉外观所需的绘制数据和绘制顺序;通过地图引擎将所述初始地图文档呈现为地图外观。
[0026]容易理解,当对地图进行修改的同时也会对地图文档进行修改,当地图文档被修改后会再次通过地图引擎重新渲染地图。
[0027]作为一种实施例,本专利技术中地图文档以JSON对象中的属性字段进行组织,遵守JSON格式规范,对地图文档的修改即是对JSON的内容修改,其组成主要由以下表1组成:
[0028]表1地图文档的组成
[0029][0030]S2、将初始地图文档转换为不可变数据结构,得到初始地图版本;
[0031]需要说明的是,本专利技术中实现不同地图版本管理的本质是:将修改前的地图版本和修改后的地图版本进行存储,按照本专利技术定义的地图文档来说,即将修改前的地图文档和修改后的地图文档进行存储,在存储的时候实现两个文档互相独立互不影响。
[0032]基于上述技术需求,需要对文档进行递归深拷贝,而目前常用的方法进行递归深拷贝会导致耗费时间长和占用内存导致影响性能,也即前述的技术缺陷。因此,本专利技术使用了不可变数据结构和结构共享来对地图的存储进行了优化。
[0033]所述不可变数据结构指的是这类的数据结构的内容是不可变的,对于这类数据结构的修改操作,都会返回一个新的副本,而原来的数据结构保存的内容不会改变,两个数据互相独立互不影响。
[0034]针对这一特性,将地图文档转换成不可变数据结构,编辑地图就会对地图文档进行修改,根据不可变数据结构的特性将会另存成一个新的地图文档,而旧的地图文档依然保存且两个版本不相同。
[0035]作为一种实施例而言,本专利技术采用了Vector trie数据结构来实现所述的持久化数据和数据共享。
[0036]其中持久化数据结构中每次修改数据就会新生成一个根节点,对于有修改的部分把相应路径上的所有节点重新生成,对于本次操作没有修改的部分则直接把相应的旧节点的路径进行复制,完成数据共享。
[0037]为方便解释上述内容,请参考图2,图2是修改Vector trie数据的示意图。当修改节点ab
‑
>ae时,生成新的版本,且只改变当前节点和父节点,其它节点不变,这种操作形式节约了空间使得内存占用更低。
[0038]基于上述原理,本专利技术中创建地图生成地图描述JSON文档后对JSON文档进行持久化处理,通过持久化结构处理更为方便的实现地图的版本管理法。
[0039]请参考图3,图3是地图文档中进行属性修改的数据结构示意图;
[0040]按照持久化数据结构的特性当地图的某个图层的paint的“fill
‑
color”被修改将会进行以下变化:只会对被修改的节点和其父节点进行修改其他不变。
[0041]S3、对初始地图版本进行属性编辑修改,记录被修改的属性;
[0042]S4、将被修改的属性与初始地图版本合并为一个不可变数据结构,得到一次操作历史;
[0043]S5、通过对不同的属性修改,获得多个操作历史,每个操作历史与上一个操作历史相本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种实现网页端地图编辑操作历史管理的方法,其特征在于:包括以下步骤:S1、创建初始地图文档;S2、将初始地图文档转换为不可变数据结构,得到初始地图版本;S3、对初始地图版本进行属性编辑修改,记录被修改的属性;S4、将被修改的属性与初始地图版本合并为一个不可变数据结构,得到一次操作历史;S5、通过对不同的属性修改,获得多个操作历史,每个操作历史与上一个操作历史相比,只有被修改的属性发生了变化;S6、查询操作历史,取出操作历史对应的地图版本,将地图版本转换为地图文档,利用地图引擎将地图文档进行恢复,得到历史地图,完成历史回溯。2.如权利要求1所述的一种实现网页端地图编辑操作历史管理的方法,其特征在于:所述初始地图文档包括呈现地图的视觉外观所需的绘制数据和绘制顺序;通过地图引擎将所述初始地...
【专利技术属性】
技术研发人员:万炎炎,彭金金,唐坚强,周慧明,
申请(专利权)人:武汉天恒信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。