技术领域
[0001] 本发明涉及矢量标会技术领域,特别是涉及一种基于开源鸿蒙地图的SVG矢量图标绘方法、设备及存储介质。
相关背景技术
[0002] 随着物联网和移动设备的发展,地图应用在智能终端上的需求日益增长。用户希望能够随时随地获取地图信息,并进行个性化的标注和编辑。
[0003] 开源鸿蒙是国产的一款开源的操作系统,具有先进的分布式框架,同时由于发布的时间不长,功能尚不完善,地图应用还不成熟。传统的开源鸿蒙地图应用在矢量标绘方面精度较低。
具体实施方式
[0029] 为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。
[0030] 本申请提供一种基于开源鸿蒙地图的SVG矢量图标绘方法,通过在基于SVG格式的矢量图在开源鸿蒙地图中进行矢量标绘,能够提高矢量标绘的精度,同时,利用开源鸿蒙地图的应用程序编程接口对SVG矢量图的SVG图像数据进行地理坐标转换,基于像素点的地理坐标信息在绘制地图,提高了地图绘制的准确性和效率。
[0031] 请参阅图1,图1是本申请实施方式中一种基于开源鸿蒙地图的SVG矢量图标绘方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施方式包括:
[0032] S110:获取SVG矢量图的SVG图像数据。
[0033] 其中,SVG矢量图(Scalable Vector Graphics,可缩放矢量图形)是一种基于XML标记语言,用于描述二维的矢量图形。SVG矢量图包括SVG画布和SVG图形。
[0034] 开源鸿蒙系统获取SVG矢量图的SVG图像数据。其中,SVG图像数据包括SVG画布的SVG画布数据和SVG图形的SVG图形数据。
[0035] 具体地,开源鸿蒙地图从各种途径获取SVG图像数据,如,从网络下载SVG图像数据、用户上传SVG图像数据或其他软件工具生成SVG图像数据。开源鸿蒙系统对获取的SVG图像数据进行检测,确保SVG图像数据具有正确的格式和内容。将SVG图像数据存储到开源鸿蒙系统的运行内存中。
[0036] S120:基于开源鸿蒙地图的应用程序编程接口,将SVG图像数据转换为SVG矢量图中每个像素值的地理坐标信息。
[0037] 利用开源鸿蒙地图平台的API(Application Programming Interface,应用程序编程)接口将SVG图像数据转换为地理坐标信息。
[0038] 具体地,将SVG画布数据和SVG图形的SVG图形数据转换为地理坐标信息。
[0039] 请参阅图2,图2是本申请实施方式中一种SVG矢量图的示意图。其中,SVG矢量图包括SVG画布和SVG图形,填充部分为SVG图形。SVG画布的SVG画布数据包括宽度数据、高度数据等。SVG图形的SVG图形数据包括SVG图形的点数据、线数据、面数据、颜色数据、填充数据等。
[0040] 请参阅图3,图3是本申请实施方式中一种基于开源鸿蒙地图的转换地理坐标信息方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图3所示的流程顺序为限。如图3所示,本实施方式包括:
[0041] S310:基于开源鸿蒙地图的应用程序编程接口,将SVG画布数据转换为SVG画布的地理坐标信息。
[0042] 首先,获取SVG画布数据中的宽度数据和高度数据。
[0043] 具体地,请参阅图2,基于SVG画布原点建立坐标系,获取SVG画布的宽度数据和高度数据。
[0044] 基于开源鸿蒙地图的应用程序编程接口,指定SVG画布的原点在开源鸿蒙地图的地理坐标信息。利用地图服务的位置转换功能,计算宽度数据和高度数据对应的地理坐标信息作为SVG画布的地理坐标信息。
[0045] 具体地,先将SVG画布的原点转换为开源鸿蒙地图的地理坐标信息。其中,默认SVG画布为矩形画布,SVG画布的原点为矩形画布左上顶点。然后,将矩形画布的其他三个顶点依次转换为开源鸿蒙地图的地理坐标信息。
[0046] S320:基于SVG画布的地理坐标信息,确定SVG图形中每个像素值的地理坐标信息。
[0047] 基于SVG画布的地理坐标信息,确定SVG图形在开源鸿蒙地图的位置区域。
[0048] 可以理解地,在SVG矢量图中,SVG图形和SVG画布的相对位置与在开源鸿蒙地图中,SVG图像和SVG图像的相对位置相同。
[0049] 在SVG图形在开源鸿蒙地图的位置区域中,确定SVG图形中每个像素值的地理坐标信息,即确定SVG图形在开源鸿蒙地图中的呈现位置。
[0050] 具体地,对SVG图形数据进行拆分,得到点集合、线段集合和面集合。其中,点集合中包括SVG图形数据中的点数据,线段集合中包括SVG图形数据中的线数据,面集合中包括SVG图形数据中的面数据。
[0051] 在位置区域中,基于开源鸿蒙地图的应用程序编程接口,利用地图服务的位置转换功能,分别确定点集合中点数据的像素值的地理坐标信息,确定线段集合中线段数据的像素值的地理坐标信息和确定面集合中面数据的像素值的地理坐标信息。
[0052] 将点数据的像素值的地理坐标信息,线段集合中线段数据的像素值的地理坐标信息和面集合中面数据的像素值的地理坐标信息保存在临时变换中。
[0053] 可以理解地,在进行地理坐标信息转换过程中,考虑地图投影、比例尺等因素,以确保地理坐标信息的准确性。
[0054] 其中,通过将SVG矢量图划分为SVG画布和SVG图形,先确定SVG画布的地理坐标信息,在此基础上,确定SVG图形的地理坐标信息。能够提高地理坐标信息转换的准确性和效率。具体地,基于SVG画布的宽度和高度确定SVG画布的地理坐标信息,能够提高SVG画布的地理坐标信息转换的效率。基于SVG画布的地理坐标信息确定SVG图形所在区域位置,为SVG图形后续的地理坐标信息确定大致方向,提高SVG图形的地理坐标信息转换的准确性和效率。对SVG图形拆分后,分别进行地理坐标信息的转换,提高SVG图形的地理坐标信息转换的效率。
[0055] S130:基于像素点的地理坐标信息,在开源鸿蒙地图上绘制SVG矢量图,得到第一绘制地图。
[0056] 基于像素值的地理坐标信息,在开源鸿蒙地图的位置区域中绘制SVG矢量图,得到第一绘制地图。
[0057] 在一种实现方式中,基于像素值的地理坐标信息,在开源鸿蒙地图的位置区域中绘制SVG矢量图中的线段和多边形。
[0058] 具体地,利用开源鸿蒙地图平台提供的绘制线段和多边形的功能,根据转换后的像素值的地理坐标信息进行绘制。
[0059] 利用开源鸿蒙地图服务的点、线、面绘制功能,确定SVG矢量图中的线段起点、终点的地理坐标信息,在开源鸿蒙地图平台上创建线段对象,将线段中各像素值对应的地理坐标信息应用于线段对象,并在开源鸿蒙地图中绘制线段;确定SVG矢量图中的多边形的顶点的地理坐标信息,在开源鸿蒙地图平台上创建多边形对象,将多边形中各像素值对应的地理坐标信息应用于多边形对象,并在开源鸿蒙地图中绘制多边形。
[0060] 将SVG图形中的所有点、线段和面(多边形)绘制在开源鸿蒙地图上,得到第一绘制地图。
[0061] 可以理解地,在第一绘制地图的绘制过程中,确保线段和多边形的绘制符合地图的比例尺和投影要求,以保持地图的准确性和一致性。
[0062] 在另一种实现方式中,对第一绘制地图进行渲染,得到第二绘制地图。
[0063] 具体地,获取SVG矢量图的特征信息,特征信息包括点集合、线段集合和面集合的颜色信息和填充信息,基于特征信息对第一绘制地图进行渲染,得到第二绘制地图。
[0064] 其中,颜色信息包括线段的颜色信息和多边形的颜色信息。在第一绘制地图的基础上,利用颜色信息进行渲染。填充信息为多边形是否具有填充,当多边形有填充时,在第一绘制地图的基础上,对该多边形进行渲染。对第一绘制地图中的所有线段和多边形进行渲染之后,得到第二绘制地图。
[0065] 该实施方式中,通过基于SVG格式的矢量图在开源鸿蒙地图中进行矢量标绘,能够提高矢量标绘的精度,同时,利用开源鸿蒙地图的应用程序编程接口对SVG矢量图的SVG图像数据进行地理坐标转换,基于像素点的地理坐标信息在绘制地图,提高了地图绘制的准确性和效率。
[0066] 在一具体实施方式中,请参阅图4,图4是本申请实施方式中另一种基于开源鸿蒙地图的SVG矢量图标绘方法的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图4所示的流程顺序为限。如图4所示,本实施方式包括:
[0067] S410:获取SVG图像数据。
[0068] 通过开源鸿蒙系统的API能力,读取指定SVG矢量图文件的内容,将SVG图像数据存储到开源鸿蒙系统的运行内存中。具体地,开源鸿蒙系统从各种途径获取SVG图像数据。SVG图像数据数据可以来自网络下载、用户上传或其他软件工具生成。确保获取的SVG图像数据具有正确的格式和内容,以便后续处理。
[0069] S420:将SVG图像数据转换为地理坐标信息。
[0070] 首先,通过指定SVG图像画布原点的地理坐标位置,获取画布的宽度和高度,通过地图服务的位置转换能力,利用开源鸿蒙地图平台的API接口,分别计算得出画布宽度和高度对应的地理坐标信息,并将SVG图像画布数据转换为对应的地理坐标信息。
[0071] 其次,通过SVG画布的坐标信息来确定SVG矢量图形在地图上呈的位置。其次,同样的原理,将SVG图像中的每个点、线等数据信息以相对画布原点的屏幕像素值为单位,通过地图服务计算每个像素值所对应的地理坐标信息,并保存到临时变量中。过程包括对每个SVG图像元素进行地理坐标定位,使其与地图上的实际位置相对应。其中,转换过程中,考虑地图投影、比例尺等因素,确保地理坐标信息的准确性。
[0072] 待所有数据转换完成后,得到一张以地理坐标为单位的SVG图像,后续便使用这份数据进行绘制渲染。
[0073] S430:在鸿蒙地图平台上绘制线段和多边。
[0074] 利用开源鸿蒙地图平台提供的绘制线段和多边形的功能,根据转换后的地理坐标信息进行绘制。
[0075] 具体地,获取线的起点、终点和多边形的顶点坐标等,在鸿蒙地图平台上创建线段和多边形对象,并将转换后的地理坐标信息应用于这些对象,将SVG矢量图像在地图中绘制出来。确保线段和多边形的绘制符合地图的比例尺和投影要求,以保持地图的准确性和一致性。
[0076] S440:根据地理坐标信息在开源鸿蒙地图上绘制SVG矢量图像。
[0077] 根据转换后的地理坐标信息,将SVG图像元素绘制在鸿蒙地图平台上。具体地,利用鸿蒙地图平台的图形绘制能力,将SVG图像以矢量形式精确地呈现在地图上。通过鸿蒙地图平台的API接口,将SVG图像元素定位到相应的地理坐标位置上,并根据需要调整其大小和比例。确保SVG图像元素与地图内容的一致性和协调性。
[0078] 可以理解地,获取SVG矢量图的特征信息,特征信息包括点集合、线段集合和面集合的颜色信息和填充信息,基于特征信息对第一绘制地图进行渲染,得到第二绘制地图。其中,颜色信息包括线段的颜色信息和多边形的颜色信息。在第一绘制地图的基础上,利用颜色信息进行渲染。填充信息为多边形是否具有填充,当多边形有填充时,在第一绘制地图的基础上,对该多边形进行渲染。对第一绘制地图中的所有线段和多边形进行渲染之后,得到第二绘制地图。
[0079] S450:实时交互与更新。
[0080] 完成图形绘制后,为了满足对图形的位置、大小、颜色、方向等需求的修改调整,需要对转换后的图像数据进行再次调整,以达到图形按照预期进行变化的效果。
[0081] 在该实施方式中,开源鸿蒙地图提供用户界面,以使得用户对开源鸿蒙地图进行交互操作。
[0082] 具体地,通过鸿蒙地图平台的UI组件和事件处理机制,构建交互式的用户界面,允许用户通过触摸或手势进行操作,如点击、拖动和缩放等。实时监测SVG矢量图像的更新,通过事件监听机制检测用户交互和数据变化。一旦检测到更新,立即重新绘制相应的地图内容,并保持与原始数据的一致性。
[0083] 其中,提供用户编辑功能,方便对开源鸿蒙地图进行添加、编辑和删除操作,提高了用户体验。
[0084] 当用户触摸或手势进行操作时,开源鸿蒙地图接收地图编辑信息,其中,编辑信息包括地图缩放、地图旋转、地图移动、地图添加和地图删除等。
[0085] 基于图像编辑信息重新获取编辑后的SVG矢量图;基于获取编辑后的SVG矢量图中每个像素值的地理坐标信息;在开源鸿蒙地图上绘制编辑后的SVG矢量图。
[0086] 具体地,当编辑信息为地图缩放、地图旋转、地图移动等,把SVG矢量图的预设位置设置为图形变化的中心点,以此中心点进行缩小、放大、旋转、移动等操作。通过步骤S420中相同的步骤,再次计算每个像素点和关键点在移动、旋转、缩放后的最终位置坐标,以新的图像数据重新绘制到地图上,让地图上的图形效果得以变化,这样便完成了图形一次调整。
[0087] 其中,一个完整的编辑操作,包含了多次的、不同程度的调整,通过用户的不断操作,或是通过地图软件提供接口进行不断的调整,以实现图形的快速变化。
[0088] 可以理解地,该实施方式还可以包括:性能优化与错误处理。在整个转换与绘制过程中进行性能优化和错误处理。通过合理的数据结构和算法优化,提高处理速度和响应时间。对于可能出现的异常情况或错误进行合理的处理和恢复机制。例如,在数据转换过程中处理无效数据或缺失值;在绘制过程中处理图形重叠或交叠问题;在用户交互时提供适当的错误提示和恢复机制等。
[0089] 在该具体实施方式中,基于SVG格式的矢量图在开源鸿蒙地图中进行矢量标绘,能够提高矢量标绘的精度,同时,利用开源鸿蒙地图的应用程序编程接口对SVG矢量图的SVG图像数据进行地理坐标转换,基于像素点的地理坐标信息在绘制地图,提高了地图绘制的准确性和效率。在地图绘制过程中,实时监测SVG图像的更新并反映在地图上是至关重要的。本发明提供的方法,确保了地图显示的实时性和准确性。SVG矢量图使得地图可以轻松地进行缩放、旋转和编辑,提高了开源鸿蒙地图的灵活性。本发明实现了高精度、高灵活性、用户友好、实时更新、导出与分享功能以及性能优化与错误处理等多方面的提升。
[0090] 请参阅图5,图5是本申请实施方式中基于开源鸿蒙地图的SVG矢量图标绘装置的结构示意图。该实施方式中,基于开源鸿蒙地图的SVG矢量图标绘装置包括获取模块51,转换模块52和绘制模块53。
[0091] 其中,获取模块51用于获取SVG矢量图的SVG图像数据;转换模块52用于基于开源鸿蒙地图的应用程序编程接口,将SVG图像数据转换为SVG矢量图中每个像素值的地理坐标信息;绘制模块53用于基于像素点的地理坐标信息,在开源鸿蒙地图上绘制SVG矢量图,得到第一绘制地图。该基于开源鸿蒙地图的SVG矢量图标绘装置能够基于SVG格式的矢量图在开源鸿蒙地图中进行矢量标绘,能够提高矢量标绘的精度,同时,利用开源鸿蒙地图的应用程序编程接口对SVG矢量图的SVG图像数据进行地理坐标转换,基于像素点的地理坐标信息在绘制地图,提高了地图绘制的准确性和效率。
[0092] 请参阅图6,图6是本申请实施方式中基于开源鸿蒙地图的SVG矢量图标绘设备的结构示意图。该实施方式中,基于开源鸿蒙地图的SVG矢量图标绘设备61包括处理器62。
[0093] 处理器62还可以称为CPU(Central Processing Unit,中央处理单元)。处理器62可能是一种集成电路芯片,具有信号的处理能力。处理器102还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器62也可以是任何常规的处理器等。
[0094] 开源鸿蒙地图的SVG矢量图标绘设备61可以进一步包括存储器(图中未示出),用于存储处理器102运行所需的指令和数据。
[0095] 处理器62用于执行指令以实现上述本申请基于开源鸿蒙地图的SVG矢量图标绘方法任一实施例及任意不冲突的组合所提供的方法。
[0096] 请参阅图7,图7是本申请实施方式中计算机可读存储介质的结构示意图。本申请实施例的计算机可读存储介质71存储有指令/程序数据72,该指令/程序数据72被执行时实现本申请基于开源鸿蒙地图的SVG矢量图标绘方法任一实施例以及任意不冲突的组合所提供的方法。其中,该指令/程序数据72可以形成程序文件以软件产品的形式存储在上述存储介质71中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质111包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
[0097] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0098] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0099] 以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。