CN117270834A - 地图渲染方法、装置、电子设备和存储介质 - Google Patents
地图渲染方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117270834A CN117270834A CN202311166950.7A CN202311166950A CN117270834A CN 117270834 A CN117270834 A CN 117270834A CN 202311166950 A CN202311166950 A CN 202311166950A CN 117270834 A CN117270834 A CN 117270834A
- Authority
- CN
- China
- Prior art keywords
- data
- tile
- map
- data block
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 175
- 238000000034 method Methods 0.000 title claims abstract description 124
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 48
- 230000000007 visual effect Effects 0.000 claims description 37
- 230000004044 response Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 14
- 239000003550 marker Substances 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 25
- 230000005540 biological transmission Effects 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000007906 compression Methods 0.000 description 14
- 230000006835 compression Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000013473 artificial intelligence Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000013144 data compression Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/206—Drawing of charts or graphs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Abstract
本公开提供了一种地图渲染方法、装置、电子设备和存储介质,涉及智能交通、大数据等领域。具体实现方案为:从多个数据块中,确定与目标应用的显示页面中地图可视区域对应的第一地理坐标范围匹配的至少一个第一数据块;调度至少一个第一子线程对各第一数据块进行渲染,并对渲染得到的各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据;将第一合并瓦片数据进行渲染并展示在地图可视区域内。由此,将地图数据集拆分为多个数据块,并通过主线程创建的至少一个第一子线程对数据块中的地图数据点进行渲染,可以避免阻塞主线程,提高渲染速度,并且,仅对地图可视区域进行渲染,可以减少不必要的渲染操作,进一步提高渲染效率。
Description
技术领域
本公开涉及AI(Artificial Intelligence,人工智能)领域,具体涉及智能交通、大数据等技术领域,尤其涉及地图渲染方法、装置、电子设备和存储介质。
背景技术
电子地图(Electronic map),即数字地图,是利用计算机技术,以数字方式存储和查阅的地图,随着浏览器和地图类APP(Application,应用)(或导航类APP)的不断普及,越来越多的用户通过上述APP,查询电子地图上的POI(Point of Interest,兴趣点)、规划出行线路、发布信息等。
如何实现在上述APP的前端地图上,快速地渲染大量的地图数据点,以使用户快速浏览相应的地图信息是非常重要的。
发明内容
本公开提供了一种用于地图渲染方法、装置、电子设备和存储介质。
根据本公开的一方面,提供了一种地图渲染方法,应用于目标应用的主线程,包括:
获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围;
从多个数据块中,确定与所述第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点;
调度所述主线程创建的至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的第一瓦片数据;
对各所述第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将所述第一合并瓦片数据进行渲染并展示在所述地图可视区域内。
根据本公开的另一方面,提供了一种地图渲染装置,应用于目标应用的主线程,包括:
获取模块,用于获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围;
确定模块,用于从多个数据块中,确定与所述第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点;
调度模块,用于调度所述主线程创建的至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的第一瓦片数据;
合并模块,用于对各所述第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据;
第一处理模块,用于将所述第一合并瓦片数据进行渲染并展示在所述地图可视区域内。
根据本公开的又一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开上述一方面提出的地图渲染方法。
根据本公开的再一方面,提供了一种计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本公开上述一方面提出的地图渲染方法。
根据本公开的还一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本公开上述一方面提出的地图渲染方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是本公开实施例一所提供的地图渲染方法的流程示意图;
图2为本公开实施例二所提供的地图渲染方法的流程示意图;
图3为本公开实施例三所提供的地图渲染方法的流程示意图;
图4为本公开实施例四所提供的地图渲染方法的流程示意图;
图5为本公开实施例五所提供的地图渲染方法的流程示意图;
图6为本公开实施例六所提供的地图渲染方法的流程示意图;
图7为本公开实施例七所提供的地图渲染方法的流程示意图;
图8为本公开实施例所提供的地图渲染方法的实现原理示意图;
图9为本公开实施例八所提供的地图渲染装置的结构示意图;
图10示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
随着地图类APP(或导航类APP)的普及,地图marker(标记点)渲染成为了一个重要的问题。传统的地图marker渲染方法,使用主线程渲染大量的marker,容易导致APP界面卡顿,降低用户的使用体验。
虽然目前已有针对界面卡顿问题的相应解决方案,如WebGL(Web GraphicsLibrary,Web图形库)技术、矢量切片技术等,但是这些解决方案至少存在以下缺点:技术门槛高,兼容性较差。
例如,目前主要包括以下几种前端地图marker渲染方案:
第一种,使用Canvas(画布)和requestAnimationFrame(请求动画帧,是浏览器用于定时循环操作的一个接口,主要用途是按帧对网页进行重绘),进行marker渲染。
该方案通过在Canvas上渲染点来实现marker的绘制。由于该方案使用了requestAnimationFrame方法,可以实现在每个动画帧之间更新屏幕,避免了大量的重绘操作。但是,由于该方案绘制marker点的速度较慢,因此,该方案在绘制大量marker点时的性能较差。
第二种,使用WebGL技术,进行marker渲染。
该方案使用WebGL技术来进行marker的渲染,可以实现更快的绘制速度和更好的渲染效果。但是,该方案需要对WebGL技术具有一定的了解,且实现难度较高。
第三种,使用Leaflet(是一个为建设移动设备友好的互动地图,而开发的现代的、开源的JavaScript(简称“JS”或“js”,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言)库).js等第三方库,进行marker渲染。
该方案使用第三方库来实现地图渲染和marker的展示。相比于自己实现渲染功能,使用第三方库可以减少开发难度和工作量。但是,该方案可能受限于第三方库的性能和功能,且需要依赖第三方库的更新和维护。
第四种,使用分布式技术,来进行marker渲染。
该方案使用分布式技术来实现marker的渲染,例如,将数据切分成多个部分,并分发给不同的服务器来进行并行地处理和渲染。虽然该方案可以有效地提高marker渲染的速度和性能,但需要一定的服务器资源和管理成本。
综上,每种方案都有其优缺点,例如,第一种使用Canvas和requestAnimationFrame的方案,简单易用,但是性能较差;第二种使用WebGL技术的方案,可以实现更好的渲染效果和更快的绘制速度,但是实现难度较高;第三种使用第三方库的方案,可以减少开发难度,但是可能受限于第三方库的性能和功能;第四种使用分布式技术的方案,可以提高性能,但是需要额外的服务器资源和管理成本。
因此针对上述存在的至少一项问题,本公开提出一种地图渲染方法、装置、电子设备和存储介质。
下面参考附图描述本公开实施例的地图渲染方法、装置、电子设备和存储介质。在具体描述本公开实施例之前,为了便于理解,首先对常用技术词进行介绍:
PostMessage(),是Windows API(Application Programming Interface,应用程序接口)中的一个常用函数,用于将一条消息放入到消息队列中,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage()和PeekMessage()取得。
Web worker,是指前端工作线程。
图1为本公开实施例一所提供的地图渲染方法的流程示意图。
本公开实施例所提供的地图渲染方法,可以应用于目标应用的主线程。
其中,目标应用是指运行在电子设备上,为用户提供服务的软件程序等,例如,目标应用可以为浏览器、导航类APP、地图类APP。
其中,电子设备可以为任一具有计算能力的设备,例如可以为个人电脑、移动终端等,移动终端例如可以为手机、平板电脑、个人数字助理、穿戴式设备等具有各种操作系统、触摸屏和/或显示屏的硬件设备。
如图1所示,该地图渲染方法可以包括以下步骤:
步骤S101,获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围。
在示例性实施例中,主线程可以计算目标应用的显示页面中的地图可视区域(或称为屏幕可视区域)在当前时刻对应的地理坐标范围(本公开中记为第一地理坐标范围)。
步骤S102,从多个数据块中,确定与第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
在示例性实施例中,为了缩短渲染时长,以降低用户的等待时长,地图数据集中可以无需包含全量的地图数据点,比如,地图数据集可以是根据目标应用所在设备在当前时刻的定位位置或用户在该目标应用中输入的搜索位置确定的。
其中,搜索位置的输入方式包括但不限于:触摸输入(如滑动、点击等)、键盘输入、语音输入等。
在示例性实施例中,主线程可以对地图数据集中的各地图数据点按照地理空间位置进行划分,得到多个数据块,其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
需要说明的是,将邻近的地图数据点划分到同一个数据块中,可以保证在进行地图渲染时,相邻的地图数据点可以在同一个子线程中处理,减少跨线程通信的开销,从而提高整体的渲染效率。这种拆分方式的优势在于:可以利用地图数据点的空间局部性,减少地图数据点之间的跨越,从而减小了数据传输和处理的开销。同时,由于相邻的地图数据点通常在地图上具有较高的视觉相关性,因此在渲染时可以更好地利用局部性,减少不必要的绘制操作,提高渲染效率。
在示例性实施例中,主线程可以从划分得到的多个数据块中,确定与第一地图可视区域的地理坐标范围匹配的至少一个第一数据块,其中,每个第一数据块所处的地理坐标(或称为坐标位置)位于地图可视区域的第一地理坐标范围内。
步骤S103,调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据。
在示例性实施例中,主线程可以创建至少一个子线程(本公开中记为第一子线程),并调度至少一个第一子线程对各个第一数据块进行渲染,以得到每个第一数据块对应的瓦片数据(本公开中记为第一瓦片数据)。
比如,以第一子线程为worker线程进行示例,主线程可以通过Web Worker的postMessage()方法进行消息传递,向每个worker线程发送一个或多个第一数据块中的各个地图数据点,以使每个worker线程对第一数据块中的地图数据点进行处理,得到第一数据块对应的第一瓦片数据。每个worker线程在得到第一瓦片数据后,可以通过postMessage()方法进行消息传递,将第一瓦片数据发送至主线程。
步骤S104,对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。
在示例性实施例中,主线程可以根据各个第一数据块所处的地理坐标,对各个第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据。并且,主线程还可以将第一合并瓦片数据进行渲染并展示在地图可视区域内。例如,主线程可以将第一合并瓦片数据传递给Canvas对象,并使用Canvas的绘图API,将第一合并瓦片数据渲染成图形,并绘制到目标应用的显示页面的画布上,以展示在该显示页面的地图可视区域中。
本公开实施例的地图渲染方法,通过从多个数据块中,确定与目标应用的显示页面中地图可视区域对应的第一地理坐标范围匹配的至少一个第一数据块;调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据;对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。由此,将地图数据集拆分为多个数据块,并通过主线程创建的至少一个第一子线程对数据块中的地图数据点进行渲染,可以避免阻塞主线程,提高渲染速度以及目标应用的响应速度,并且,仅对用户当前可见的地图可视区域进行渲染,可以减少不必要的渲染操作,进一步提高渲染效率。
需要说明的是,本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均在征得用户同意的前提下进行,并且均符合相关法律法规的规定,且不违背公序良俗。
为了清楚说明本公开任一实施例中是如何得到各第一数据块对应的第一瓦片数据的,本公开还提出一种地图渲染方法。
图2为本公开实施例二所提供的地图渲染方法的流程示意图。
如图2所示,该地图渲染方法可以包括以下步骤:
步骤S201,获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围。
步骤S202,从多个数据块中,确定与第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
步骤S201至S202的解释说明可以参见本公开任一实施例中的相关描述,在此不做赘述。
步骤S203,获取目标应用的显示页面的缩放比例信息。
在示例性实施例中,主线程可以获取目标应用的显示页面的缩放比例信息。
步骤S204,根据缩放比例信息,从至少一个瓦片层级中确定与缩放比例信息匹配的目标瓦片层级。
需要说明的是,不同用户的页面展示需求可能不同,比如,用户1喜欢放大查看地图,用户2喜欢缩小查看地图,当目标应用的显示页面的缩放比例不同时,该显示页面展示的是不同瓦片层级的瓦片数据。举例而言,对于喜欢放大查看地图的用户而言,可以展示瓦片地图金字塔靠近底层的某个瓦片层级的瓦片数据,而对于喜欢缩小查看地图的用户而言,可以展示瓦片地图金字塔靠近顶层的某个瓦片层级的瓦片数据。
在示例性实施例中,可以预先设置不同的缩放比例信息(或称为缩放尺度信息)与瓦片层级之间的对应关系,从而主线程可以根据显示页面在当前时刻的缩放比例信息,查询上述对应关系,以得到与该缩放比例信息匹配的目标瓦片层级(比如瓦片地图金字塔的第4层、第6层等)。
步骤S205,调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据。
在示例性实施例中,主线程可以调度至少一个第一子线程对各个第一数据块进行渲染,以得到各第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据。
在示例性的任意一个实施例中,在主线程获取到第一子线程发送的第一瓦片数据后,还可以销毁第一子线程,以释放该第一子线程所占用的资源,降低资源占用。
步骤S206,对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。
步骤S206的解释说明可以参见本公开任一实施例中的相关描述,在此不做赘述。
本公开实施例的地图渲染方法,通过根据目标应用的显示页面的缩放比例信息,确定与该缩放比例信息匹配的目标瓦片层级,并渲染与该目标瓦片层级匹配的瓦片数据,可以满足不同用户的个性化的页面展示需求。
为了清楚说明上述实施例,本公开还提出一种地图渲染方法。
图3为本公开实施例三所提供的地图渲染方法的流程示意图。
如图3所示,该地图渲染方法可以包括以下步骤:
步骤S301,获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围。
步骤S302,从多个数据块中,确定与第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
步骤S303,获取目标应用的显示页面的缩放比例信息。
步骤S304,根据缩放比例信息,从至少一个瓦片层级中确定与缩放比例信息匹配的目标瓦片层级。
步骤S301至S304的解释说明可以参见本公开任一实施例中的相关描述,在此不做赘述。
步骤S305,判断缓存中是否存在与各第一数据块对应且与目标瓦片层级匹配的参考瓦片数据,若否,则执行步骤S306-S307,若是,则执行步骤S308至S310。
需要说明的是,步骤S306-S307与步骤S308至S310为并列的两种实现方式,实际应用时,仅需择一执行。
步骤S306,调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的与目标瓦片层级匹配的第一瓦片数据。
在示例性实施例中,在缓存中不存在与第一数据块对应且与目标瓦片层级匹配的参考瓦片数据的情况下,主线程可以调度第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的与目标瓦片层级匹配的第一瓦片数据。
在示例性的任意一个实施例之中,主线程还可以将第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据存入缓存,以避免重复渲染第一数据块,提高目标应用的性能。
步骤S307,对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。
步骤S306至S307的解释说明可以参见本公开任一实施例中的相关描述,在此不做赘述。
步骤S308,调度至少一个第一子线程对各第一数据块中除第二数据块之外的第三数据块进行渲染,以得到第三数据块对应的且与目标瓦片层级匹配的第二瓦片数据。
其中,第二数据块的数量可以为一个,或者也可以为多个,本公开实施例对此并不作限制。相应的,第三数据块的数量可以为一个,或者也可以为多个,本公开实施例对此也不作限制。
在示例性实施例中,在缓存中存在与各第一数据块中的第二数据块对应且与目标瓦片层级匹配的参考瓦片数据的情况下,主线程可以调度至少一个第一子线程对各第一数据块中除第二数据块之外的第三数据块进行渲染,以得到第三数据块对应的且与目标瓦片层级匹配的第二瓦片数据。
比如,主线程可以统计第三数据块的数量(本公开中记为第四数量),并确定每个子线程允许处理的数据块的数量(本公开中记为第二数量),可以根据第四数量与第二数量的比值,确定待创建的第一子线程的数量。例如,第一子线程的数量可以为:对第四数量与第二数量的比值进行向上取整所得到的整数值,比如,假设第四数量为7,第二数量为2,则第一子线程的数量可以为4。
从而主线程可以根据第一子线程的数量,创建相应数量的第一子线程,并调度各个第一子线程对第三数据块进行渲染,以得到第三数据块对应的且与目标瓦片层级匹配的第二瓦片数据。
仍以上述例子进行示例,每个第一子线程可以对2个第三数据块进行渲染,得到各个第三数据块对应的且与目标瓦片层级匹配的第二瓦片数据。
步骤S309,将第二数据块对应的参考瓦片数据与第三数据块对应的第二瓦片数据进行合并,得到第二合并瓦片数据。
在示例性实施例中,主线程可以根据第二数据块所处的地理坐标和第三数据块所处的地理坐标,将第二数据块对应的参考瓦片数据与第三数据块对应的第二瓦片数据进行合并,得到第二合并瓦片数据。
步骤S310,将第二合并瓦片数据进行渲染并展示在地图可视区域内。
在示例性实施例中,主线程可以将第二合并瓦片数据进行渲染并展示在地图可视区域内。例如,主线程可以将第二合并瓦片数据传递给Canvas对象,并使用Canvas的绘图API,将第二合并瓦片数据渲染成图形,并绘制到目标应用的显示页面的画布上,以展示在该显示页面的地图可视区域中。
在示例性的任意一个实施例之中,主线程还可以将第三数据块对应的且与目标瓦片层级匹配的第二瓦片数据存入缓存,以避免重复渲染第三数据块,提高目标应用的性能。
本公开实施例的地图渲染方法,通过在对各个第一数据块进行渲染之前,先查询缓存中的各个已渲染的瓦片数据,以确定是否存在与第一数据块对应且与目标瓦片层级匹配的瓦片数据,若是,则无需重新渲染已渲染过的第一数据块对应的瓦片数据,可以降低资源消耗,提升页面的渲染效率,若否,则调度第一子线程对第一数据块进行渲染,以满足用户实际的页面查询需求。
为了清楚说明上述任一实施例,本公开还提出一种地图渲染方法。
图4为本公开实施例四所提供的地图渲染方法的流程示意图。
如图4所示,该地图渲染方法可以包括以下步骤:
步骤S401,获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围。
步骤S402,从多个数据块中,确定与第一地理坐标范围匹配的至少一个第一数据块,以及确定至少一个第四数据块。
其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
其中,第四数据块与第一数据块相邻,和/或,第四数据块与第一数据块之间的距离小于设定距离阈值。例如,主线程可以确定与第一数据块邻接的各个第四数据块。
步骤S403,调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据。
其中,目标瓦片层级是根据目标应用的显示页面的缩放比例信息确定的,其实现原理可以参见上述实施例中的相关描述,在此不做赘述。
步骤S401至S403的解释说明可以参见上述实施例中的相关描述,在此不做赘述。
步骤S404,调度主线程创建的至少一个第二子线程,对各第四数据块进行渲染,以得到各第四数据块对应的且与目标瓦片层级匹配的第三瓦片数据。
在示例性实施例中,主线程还可以调度至少一个第二子线程,对各个第四数据块进行渲染,以得到各第四数据块对应的且与目标瓦片层级匹配的第三瓦片数据。
需要说明的是,本示例性实施例中,对步骤S403和S404的执行时序不作限制,图4仅以步骤S404在S403之后执行进行示例,实际应用时,步骤S403还可以与S404并列执行,或者步骤S404还可以在S403之前执行。
在示例性的任意一个实施例中,主线程在获取到第二子线程发送的第三瓦片数据后,还可以销毁第二子线程,以释放该第二子线程所占用的资源,降低资源占用。
步骤S405,将各第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据存入缓存,以及将各第四数据块对应的第三瓦片数据存入缓存。
在示例性实施例中,主线程可以将各第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据存入缓存,以及将各第四数据块对应的第三瓦片数据存入缓存,以避免重复渲染第一数据块和第四数据块。
在示例性的任意一个实施例之中,当用户滑动地图可视区域时,主线程可以查询缓存中已渲染的各个数据块对应的瓦片数据中,是否存在位于滑动后的地图可视区域内的数据块对应的瓦片数据,若是,则主线程可以无需重新渲染数据块对应的瓦片数据,直接根据已渲染的瓦片数据进行图形绘制,并展示在滑动后的地图可视区域内。
即,主线程可以响应于用户触发的对地图可视区域的滑动操作,获取滑动后的地图可视区域对应的第二地理坐标范围,并从多个数据块中,确定与第二地理坐标范围匹配的至少一个第五数据块。
之中,主线程可以判断缓存中是否存在与各第五数据块对应且与目标瓦片层级匹配的第四瓦片数据,若是,则主线程可以对各第五数据块对应的第四瓦片数据进行合并,得到第三合并瓦片数据,并将第三合并瓦片数据进行渲染并展示在地图可视区域内。
由此,通过预加载和预渲染用户可能查看的数据块对应的瓦片数据,当用户查看该数据块时,可以从缓存中直接获取该数据块对应的瓦片数据,而无需对该数据块进行重新渲染,可以进一步提升渲染效率,降低用户的等待时长,改善用户的使用体验。
步骤S406,对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。
需要说明的是,本示例性实施例中,对步骤S405和S406的执行时序不作限制,图4仅以步骤S405在S406之后执行进行示例,实际应用时,步骤S405还可以与S406并列执行,或者步骤S405还可以在S406之前执行。
本公开实施例的地图渲染方法,主线程将各第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据存入缓存,以及将各第四数据块对应的第三瓦片数据存入缓存,可以实现避免重复渲染第一数据块和第四数据块。并且,通过预加载和预渲染用户可能查看的第四数据块对应的瓦片数据,可以进一步提升渲染效率,降低用户的等待时长,改善用户的使用体验。
为了清楚说明本公开任一实施例中是如何获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围的,本公开还提出一种地图渲染方法。
图5为本公开实施例五所提供的地图渲染方法的流程示意图。
如图5所示,该地图渲染方法可以包括以下步骤:
步骤S501,获取目标位置信息。
在示例性实施例中,主线程可以获取目标位置信息,其中,目标位置信息可以包括:目标应用所在设备在当前时刻的定位位置或用户在目标应用中输入的搜索位置。
其中,搜索位置的输入方式包括但不限于:触摸输入(如滑动、点击等)、键盘输入、语音输入等。
步骤S502,获取目标应用的显示页面的缩放比例信息。
在示例性实施例中,主线程可以获取目标应用的显示页面的缩放比例信息。
步骤S503,根据目标位置信息、缩放比例信息和地图可视区域的尺寸信息,确定地图可视区域对应的第一地理坐标范围。
在示例性实施例中,主线程可以根据目标位置信息、缩放比例信息和地图可视区域的尺寸信息,计算该地图可视区域对应的第一地理坐标范围。
步骤S504,从多个数据块中,确定与第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
步骤S505,调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据。
步骤S506,对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。
步骤S504至S506的解释说明可以参见本公开任一实施例中的相关描述,在此不做赘述。
本公开实施例的地图渲染方法,可以实现根据目标位置信息、缩放比例信息和地图可视区域的尺寸信息,准确计算地图可视区域对应的地理坐标范围,以使后续渲染的页面能够满足用户的实际查看需求。
为了清楚说明上述任一实施例,本公开还提出一种地图渲染方法。
图6为本公开实施例六所提供的地图渲染方法的流程示意图。
如图6所示,该地图渲染方法可以包括以下步骤:
步骤S601,获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围。
步骤S602,从多个数据块中,确定与第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
步骤S601至S602的解释说明可以参见本公开任一实施例中的相关描述,在此不做赘述。
步骤S603,获取第一数据块的第一数量。
在示例性实施例中,主线程可以统计第一数据块的数量(本公开中记为第一数量)。
步骤S604,获取配置信息,其中,配置信息用于指示每个第一子线程允许处理的数据块的第二数量。
在示例性实施例中,主线程可以获取配置信息,其中,配置信息用于指示每个子线程允许处理的数据块的数量(本公开中记为第二数量)。
步骤S605,根据第一数量和第二数量,确定待创建的第一子线程的第三数量。
在示例性实施例中,可以计算第一数量和第二数量的比值,并根据该比值,确定待创建的第一子线程的数量(本公开中记为第三数量)。
比如,当第一数量和第二数量的比值为整数时,可以将该比值作为第三数量,而当该比值不为整数时,可以对该比值进行向上取值,以得到第三数量。
步骤S606,创建第三数量的第一子线程,并调度第三数量的第一子线程对第一数量的第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据。
在示例性实施例中,主线程可以创建第三数量的第一子线程,并调度第三数量的第一子线程对第一数量的第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据。比如,每个第一子线程可以对第二数量的第一数据块进行渲染,得到各第一数据块对应的第一瓦片数据。
步骤S607,对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。
步骤S607的解释说明可以参见本公开任一实施例中的相关描述,在此不做赘述。
本公开实施例的地图渲染方法,通过根据第一数据块的第一数量以及每个第一子线程允许处理的数据块的第二数量,确定待创建的第一子线程的第三数量,可以实现避免创建多余的子线程,充分利用各个子线程,以降低资源的占用。
为了清楚说明上述任一实施例,本公开还提出一种地图渲染方法。
图7为本公开实施例七所提供的地图渲染方法的流程示意图。
如图7所示,该地图渲染方法可以包括以下步骤:
步骤S701,向服务端发送数据获取请求。
在示例性实施例中,主线程可以向服务端发送数据获取请求,其中,数据获取请求中携带目标位置信息和目标应用的显示页面的缩放比例信息,其中,目标位置信息可以包括:目标应用所在设备在当前时刻的定位位置或用户在目标应用中输入的搜索位置。
其中,搜索位置的输入方式包括但不限于:触摸输入(如滑动、点击等)、键盘输入、语音输入等。
步骤S702,接收服务端响应于数据获取请求所发送的数据获取响应。
在示例性实施例中,主线程可以接收服务端响应于该数据获取请求所发送的数据获取响应,其中,数据获取响应用于指示地图数据集,地图数据集是根据缩放比例信息和目标位置信息从全量数据集中获取的。
比如,服务端可以根据缩放比例信息和目标位置信息,计算一个用户可能查看的地理位置范围,其中,地图可视区域对应的第一地理坐标范围包含于该地理位置范围。之后,服务端可以从全量数据集中确定与该地理位置范围匹配的地图数据集,其中,地图数据集中各地图数据点的地理空间位置位于该地理位置范围内。
在示例性的任意一个实施例中,为了提升传输效率,服务端在向主线程发送数据获取响应时,可以对地图数据集进行压缩和/或编码处理,并向主线程发送处理后的数据。
即,服务端可以对地图数据集进行压缩和/或编码处理,得到目标数据,并向主线程发送携带目标数据的数据获取响应,相应的,主线程在接收到数据获取响应后,可以对数据获取响应中的目标数据进行解码和/或解压缩,以得到地图数据集。或者,主线程可以调度至少一个第三子线程,对目标数据进行解码和/或解压缩,以得到地图数据集。
由此,可以实现对服务端和主线程之间传输的数据进行压缩和/或编码处理,以降低传输的数据量,提升传输效率,以及降低传输资源的占用。
在示例性的任意一个实施例中,在主线程获取到第三子线程发送的地图数据集后,还可以销毁第三子线程,以释放该第三子线程所占用的资源,降低资源占用。
步骤S703,将地图数据集中的各地图数据点,按照地理空间位置进行划分,以得到多个数据块。
在示例性实施例中,主线程可以对地图数据集中的各地图数据点,按照地理空间位置进行划分,得到多个数据块,其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
步骤S704,获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围。
需要说明的是,本示例性实施例中,对步骤S701至S701和步骤S704的执行时序不作限制,图7仅以步骤S704在S703之后执行进行示例,实际应用时,步骤S701至S701还可以与S704并列执行,或者步骤S704还可以在S701之前执行,等等。
步骤S705,从多个数据块中,确定与第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
步骤S706,调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据。
步骤S707,对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。
步骤S704至S707的解释说明可以参见本公开任一实施例中的相关描述,在此不做赘述。
本公开实施例的地图渲染方法,可以实现无需从服务端加载全量数据集,仅加载位于用户可能查看的地理位置范围的地图数据集,可以降低加载时长和传输资源的消耗,进一步降低用户的等待时长。
随着电子地图的应用场景的不断增多,如何在前端地图上实现marker渲染已成为一个重要的技术难题。目前,传统的渲染方案在marker处理时,存在性能瓶颈和响应延迟等问题,影响了用户的使用体验。因此,本公开提出一种高效的前端地图marker渲染方案来解决上述问题。
即,本公开提出了一种基于Web Worker的GIS(Geographic Information System或Geo-Information system,地理信息系统)地图marker渲染方案,主要包括以下步骤:
步骤1,将地图数据集拆分为多个数据块,并在每个Web Worker中处理数据块,避免阻塞主线程,提高程序的响应速度。
其中,步骤1主要包括以下子步骤:
步骤1.1,将地图数据集中的各地图数据点按照地理空间位置进行划分,将邻近的地图数据点划分到同一个数据块中。
步骤1.2,根据用户当前屏幕上的可视地图区域进行划分,将可视地图区域内的地图数据点划分到同一个数据块中。这样可以确保只对用户当前可见的地图区域进行渲染,减少不必要的渲染操作,提高渲染效率。
其中,步骤1.2主要包括以下子步骤:
步骤1.2.1,获取地图可视区域。
例如,可以通过目标应用的API,获取目标应用当前展示页面(本公开中记为显示页面)上用户可视的地图区域(本公开中记为地图可视区域)。比如,以目标应用为浏览器进行示例,可以通过获取浏览器窗口的视口(viewport)尺寸和滚动条的位置,来计算得到地图可视区域。
步骤1.2.2,计算数据块范围。根据地图可视区域的位置和尺寸,结合地图数据的地理坐标信息,计算出地图可视区域对应的地理坐标范围,即需要渲染的地图数据点的范围。
步骤1.2.3,将地理坐标范围转换为数据块范围。根据预先定义的数据块大小,将计算得到的地理坐标范围转换为数据块范围。其中,数据块范围可以由行号和列号表示,每个数据块对应一个唯一的行号和列号。
步骤1.2.4,发送数据块范围给worker线程。将计算得到的数据块范围发送给相应的worker线程,例如,可以通过Web Worker的postMessage()方法进行消息传递。每个worker线程负责处理一个或多个数据块,并生成需要渲染的点的坐标信息。
步骤1.2.5,在worker线程中处理数据块。在每个worker线程中,根据接收到的数据块范围,从地图数据集中提取对应的数据块,并使用算法对数据块进行处理,生成需要渲染的点(后续称为待渲染点)的坐标信息。
步骤1.2.6,将待渲染点的坐标信息发送回主线程。worker线程在处理完数据块后,将生成的待渲染点的坐标信息发送回主线程,比如,可以通过postMessage()方法进行消息传递。
步骤1.2.7,在主线程中合并待渲染点的坐标信息。主线程接收到来自多个worker线程发送的待渲染点的坐标信息后,将其合并为一个完整的点集。
步骤1.2.8,渲染点集到Canvas(画布)对象。主线程将合并得到的点集传递给Canvas对象,并使用Canvas的绘图API将点集渲染成图形,并绘制到显示页面上的画布上。
步骤1.2.9,重复步骤1.2.3至1.2.8:在用户操作地图时,不断地更新地图可视区域,重新计算数据块范围,并发送给相应的worker线程进行处理和渲染,从而实现地图的动态调整和显示。
步骤2,使用Canvas技术绘制待渲染点,将每个数据块的处理结果渲染到Canvas对象上,快速绘制大量的待渲染点,并进行自定义操作。
步骤3,使用缓存技术,将渲染结果进行缓存,避免重复渲染,提高程序性能。
步骤4,优化数据传输,使用数据编码和/或数据压缩技术,减少数据传输量,提高传输效率。
综上,基于web worker的GIS地图marker渲染方案,可以有效地解决marker数据渲染时的性能问题。本公开相对于现有技术而言,至少具有以下优点:
1、使用Web Worker技术,避免阻塞主线程,提高程序的响应速度。
2、使用缓存技术,提高程序性能。
例如,当用户打开地图页面时,主线程首先将地图初始化,并将需要渲染的地图数据集传递给web worker。具体地,主线程将地图数据集分成多个数据块,并在每个worker中处理数据块。每个worker将数据块的处理结果返回给主线程,主线程将处理结果存储到缓存中。
当用户进行地图操作(如平移、缩放)时,主线程从缓存中读取数据,并使用canvas将数据渲染到地图上。此时,主线程可以通过请求缓存中缺失的数据块来异步地加载缓存,以便快速地渲染marker数据。
3、使用Canvas技术,快速绘制大量的待渲染点,并进行自定义操作。
例如,在渲染marker数据时,使用canvas对象可以对点进行样式、标注等自定义操作,同时使用web worker,可以避免阻塞主线程,提高程序的响应速度。
4、优化数据传输,减少数据传输量,提高传输效率。例如,可以通过数据编码和/或数据压缩技术,进一步减少数据传输量,提高传输效率。
可选地,主线程控制各个子线程对数据块进行渲染的方式,至少具有以下优点:
(1)提高渲染效率:子线程可以在后台独立处理数据块,不会阻塞主线程的执行,从而可以提高地图的渲染效率。主线程可以继续处理用户输入和界面交互等任务,不会因为地图渲染而造成卡顿和延迟。
(2)并行处理能力:采用子线程处理数据块的方案,可以充分利用多核CPU(Central Processing Unit,中央处理器)的并行处理能力,同时处理多个数据块,从而加快地图渲染速度。而在单线程处理的方案中,所有的处理任务都在主线程中执行,无法充分利用多核CPU的优势。
(3)提高用户体验:由于地图渲染速度得到提升,用户可以更快地看到地图上的数据展示,从而提高用户的使用体验和满意度。用户不需要等待长时间的加载和渲染过程,可以更加流畅地进行地图操作和浏览。
(4)解耦业务逻辑:采用子线程处理数据块的方案,可以将地图渲染的业务逻辑与主线程的其他任务解耦,使代码更加清晰和易于维护。主线程可以专注于用户界面和用户交互的处理,而子线程可以专注于地图数据的处理,降低了代码的复杂度。
(5)良好的稳定性:由于子线程是独立于主线程的,即使子线程出现错误或异常,也不会影响主线程的执行和用户界面的稳定性。这有助于提高应用程序的稳定性和健壮性。
需要注意的是,采用子线程处理数据块的方案,也需要考虑一些潜在的问题,如线程间通信、资源竞争等,并进行相应的处理和优化,以确保整体的性能和稳定性。
可选地,在基于Web Worker的地图渲染方案中,主线程负责管理所有的子线程(即worker线程),包括以下方面:
(1)创建和终止worker线程:主线程负责创建和终止worker线程。创建worker线程时,主线程通过调用new Worker()方法创建一个新的worker对象,并通过指定worker脚本的URL(Uniform Resource Locator,统一资源定位符)或Blob对象来加载worker脚本。主线程还可以通过调用worker对象的terminate()方法来终止worker线程的执行。
(2)通信与消息传递:主线程和worker线程之间可以通过消息传递来进行通信。主线程和worker线程可以分别通过调用postMessage()方法来发送消息,并通过监听message(消息)事件来接收消息。主线程和worker线程之间可以交换数据和指令,从而进行协同处理地图数据。
(3)监控和错误处理:主线程可以通过监听worker线程的message事件和error(错误)事件来监控worker线程的状态和执行结果。主线程可以根据接收到的消息和错误信息来处理异常情况,例如处理worker线程中的错误、重新加载worker脚本等。
(4)数据分发和合并:主线程负责将海量的地图数据集拆分成多个数据块,并将这些数据块分发给不同的worker线程进行处理。主线程还负责合并和组装worker线程返回的处理结果,从而形成完整的地图渲染数据。这可能涉及到数据的拆分、分发、合并、排序等操作。
(5)控制和调度:主线程可以控制和调度worker线程的执行,例如根据实际情况调整worker线程的数量、优先级或执行顺序,以及根据地图视图的变化来触发worker线程的重新处理等。
(6)销毁和资源释放:主线程负责在不需要时终止和销毁worker线程,并释放相关的资源,例如调用worker对象的terminate()方法来终止worker线程的执行,并通过解除对worker对象的引用来释放内存和资源。
需要注意的是,管理worker线程需要谨慎处理线程间通信、错误处理、数据合并等情况,以确保整体的性能和稳定性。具体的管理方式和策略可以根据具体的地图渲染需求和应用场景来进行设计和实现。
可选地,对于缓存技术,缓存策略可以包括:根据数据的访问模式和更新频率,采用不同的缓存策略,如LRU(Least Recently Used,最近最少使用)、LFU(Least FrequentlyUsed,最不常使用)等,以优化缓存的命中率和缓存数据的有效性。例如,可以将缓存中最近最少使用的数据进行删除,或者,可以将缓存中最不常使用的数据进行删除。
数据预取和预加载:根据用户的浏览行为和地图视口的变化,提前预取和预加载可能需要的数据,以减少用户在浏览过程中的等待时间。
可选地,对于编码技术,可以使用基于二进制的编码算法,比如,使用基于二进制的编码格式,如Protocol Buffers(protobuf,是一种以有效并可扩展的格式编码结构化数据的方式)或MessagePack(是一种高效的二进制序列化框架),以进一步减少数据大小和编解码的时间,提高传输效率。
可选地,对于数据压缩技术:
压缩级别可以选择:压缩算法通常有不同的压缩级别可以选择,可以根据实际数据和性能需求选择合适的压缩级别,以在压缩比和性能之间进行权衡。
压缩字典:对于重复性较高的数据,可以使用预先构建的压缩字典,如Zlib(是提供数据压缩用的函式库)的预定义字典,以提高压缩效率。
流式压缩:在传输数据时使用流式压缩,可以逐步地压缩和传输数据,从而减少内存使用和提高传输效率。
可选地,可以同时使用数据压缩技术和编码技术,对传输数据进行压缩和编码处理,例如,可以先使用压缩算法(如Gzip(是若干种文件压缩程序的简称))进行数据压缩,然后再使用编码算法(如Base64(是一种基于64个可打印字符来表示二进制数据的方法)编码),对压缩后的数据进行编码,以减小传输的数据量,并且,还可以实现在解码时减少解压缩的时间。
作为一种示例,本公开所提供的地图渲染方法的实现原理可以如图8所示,主要包括以下步骤:
步骤A,将海量的地图数据集拆分成多个数据块,每个数据块的大小根据具体情况而定。
步骤B,创建一个或多个web worker线程,每个worker线程处理一个或多个数据块。其中,主线程则负责管理所有的worker线程。
步骤C,在每个worker线程中,使用算法对数据块进行处理,并生成待渲染点的坐标信息。
步骤D,worker线程将生成的待渲染点的坐标信息发送回主线程。
步骤E,主线程将接收到的待渲染点的坐标信息,组合成一个完整的点集,并将其传递给Canvas对象。
步骤F,Canvas对象将点集渲染成图形,并绘制到显示页面上的画布上。
步骤G,重复步骤C至F,直到所有的数据块都被处理并渲染完毕。
步骤H,缓存渲染结果,避免重复渲染。
综上,本公开所提供的地图渲染方法,相对于现有技术而言,至少解决了以下问题:
1、提高了marker渲染的性能:通过使用Web Worker来处理数据,可以将地图数据集拆分成多个数据块,并在每个Web Worker中处理数据块,避免阻塞主线程,提高程序的响应速度。
2、改进了marker渲染的效果:通过使用Canvas来呈现数据,可以快速绘制大量的数据点,并对数据点进行更多的自定义操作,例如样式、标注等等,从而提升用户体验。
3、减少了数据传输量:通过使用数据编码和/或数据压缩技术,可以减少数据传输量,提高传输效率,降低网络负载。
4、提高了程序的稳定性:通过使用缓存技术,将渲染结果进行缓存,避免重复渲染,进一步提高程序的性能和稳定性。
因此,本公开相对于现有方案具有更高的性能、更好的用户体验、更低的网络负载和更高的稳定性,能够有效地提升前端地图marker渲染的处理效率和渲染效果。
与上述图1至图7实施例提供的地图渲染方法相对应,本公开还提供一种地图渲染装置,由于本公开实施例提供的地图渲染装置与上述图1至图7实施例提供的地图渲染方法相对应,因此在地图渲染方法的实施方式也适用于本公开实施例提供的地图渲染装置,在本公开实施例中不再详细描述。
图9为本公开实施例八所提供的地图渲染装置的结构示意图。
如图9所示,该地图渲染装置900可以包括:获取模块910、确定模块920、调度模块930、合并模块940以及第一处理模块950。
其中,获取模块910,用于获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围。
确定模块920,用于从多个数据块中,确定与第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点。
调度模块930,用于调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据。
合并模块940,用于对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据。
第一处理模块950,用于将第一合并瓦片数据进行渲染并展示在地图可视区域内。
在示例性实施例的一种可能的实现方式中,调度模块930,用于:获取目标应用的显示页面的缩放比例信息;根据缩放比例信息,从至少一个瓦片层级中确定与缩放比例信息匹配的目标瓦片层级;调度至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据。
在示例性实施例的一种可能的实现方式中,调度模块930,用于:判断缓存中是否存在与各第一数据块对应的且与目标瓦片层级匹配的参考瓦片数据;在缓存中不存在与第一数据块对应且与目标瓦片层级匹配的参考瓦片数据的情况下,调度至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的与目标瓦片层级匹配的第一瓦片数据。
在示例性实施例的一种可能的实现方式中,调度模块930,还用于:在缓存中存在与各第一数据块中的第二数据块对应且与目标瓦片层级匹配的参考瓦片数据的情况下,调度至少一个第一子线程对各第一数据块中除第二数据块之外的第三数据块进行渲染,以得到第三数据块对应的且与目标瓦片层级匹配的第二瓦片数据;
合并模块940,还用于:将第二数据块对应的参考瓦片数据与第三数据块对应的第二瓦片数据进行合并,得到第二合并瓦片数据;
第一处理模块950,还用于:将第二合并瓦片数据进行渲染并展示在地图可视区域内。
在示例性实施例的一种可能的实现方式中,该地图渲染装置900还可以包括:
第一存储模块,用于将第三数据块对应的且与目标瓦片层级匹配的第二瓦片数据存入缓存;或者,将各第一数据块对应的且与目标瓦片层级匹配的第一瓦片数据存入缓存。
在示例性实施例的一种可能的实现方式中,确定模块920,还用于:从多个数据块中确定至少一个第四数据块,其中,第四数据块与第一数据块相邻,和/或,第四数据块与第一数据块之间的距离小于设定距离阈值;
调度模块930,还用于:调度主线程创建的至少一个第二子线程,对各第四数据块进行渲染,以得到各第四数据块对应的且与目标瓦片层级匹配的第三瓦片数据;其中,目标瓦片层级是根据显示页面的缩放比例信息确定的;
该地图渲染装置900还可以包括:
第二存储模块,用于将各第四数据块对应的第三瓦片数据存入缓存。
在示例性实施例的一种可能的实现方式中,获取模块910,还用于:响应于对地图可视区域的滑动操作,获取地图可视区域对应的第二地理坐标范围;
确定模块920,还用于:从多个数据块中,确定与第二地理坐标范围匹配的至少一个第五数据块;
合并模块930,还用于:在缓存中存在与各第五数据块对应且与目标瓦片层级匹配的第四瓦片数据的情况下,对各第五数据块对应的第四瓦片数据进行合并,得到第三合并瓦片数据;
第一处理模块940,还用于:将第三合并瓦片数据进行渲染并展示在地图可视区域内。
在示例性实施例的一种可能的实现方式中,获取模块910,用于:获取目标位置信息,其中,目标位置信息包括目标应用所在设备的定位位置或目标应用中输入的搜索位置;获取目标应用的显示页面的缩放比例信息;根据目标位置信息、缩放比例信息和地图可视区域的尺寸信息,确定地图可视区域对应的第一地理坐标范围。
在示例性实施例的一种可能的实现方式中,调度模块930,用于:获取第一数据块的第一数量;获取配置信息,其中,配置信息用于指示每个第一子线程允许处理的数据块的第二数量;根据第一数量和第二数量,确定待创建的第一子线程的第三数量;创建第三数量的第一子线程,并调度第三数量的第一子线程对第一数量的第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据。
在示例性实施例的一种可能的实现方式中,该地图渲染装置900还可以包括:
发送模块,用于向服务端发送数据获取请求;其中,数据获取请求中携带目标位置信息和显示页面的缩放比例信息,目标位置信息包括目标应用所在设备的定位位置或目标应用中输入的搜索位置;
接收模块,用于接收服务端响应于数据获取请求所发送的数据获取响应;其中,数据获取响应用于指示地图数据集,地图数据集是根据缩放比例信息和目标位置信息从全量数据集中获取的;
划分模块,用于将地图数据集中的各地图数据点,按照地理空间位置进行划分,以得到多个数据块。
在示例性实施例的一种可能的实现方式中,数据获取响应携带目标数据,目标数据是对地图数据集进行压缩和编码得到的;该地图渲染装置900还可以包括:
第二处理模块,用于对目标数据进行解码和解压缩,以得到地图数据集;或者,调度主线程创建的至少一个第三子线程,对目标数据进行解码和解压缩,以得到地图数据集。
在示例性实施例的一种可能的实现方式中,该地图渲染装置900还可以包括:
销毁模块,用于销毁至少一个第一子线程,以释放至少一个第一子线程所占用的资源。
本公开实施例的地图渲染装置,通过从多个数据块中,确定与目标应用的显示页面中地图可视区域对应的第一地理坐标范围匹配的至少一个第一数据块;调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据;对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。由此,将地图数据集拆分为多个数据块,并通过主线程创建的至少一个第一子线程对数据块中的地图数据点进行渲染,可以避免阻塞主线程,提高渲染速度以及目标应用的响应速度,并且,仅对用户当前可见的地图可视区域进行渲染,可以减少不必要的渲染操作,进一步提高渲染效率。
为了实现上述实施例,本公开还提供一种电子设备,该电子设备可以包括至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开上述任一实施例提出的地图渲染方法。
为了实现上述实施例,本公开还提供一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开上述任一实施例提出的地图渲染方法。
为了实现上述实施例,本公开还提供一种计算机程序产品,该计算机程序产品包括计算机程序,计算机程序在被处理器执行时实现本公开上述任一实施例提出的地图渲染方法。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图10示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。其中,电子设备可以包括上述实施例中的服务端、客户端。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,设备1000包括计算单元1001,其可以根据存储在ROM(Read-OnlyMemory,只读存储器)1002中的计算机程序或者从存储单元1007加载到RAM(Random AccessMemory,随机访问/存取存储器)1003中的计算机程序,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。I/O(Input/Output,输入/输出)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于CPU(Central Processing Unit,中央处理单元)、GPU(Graphic Processing Units,图形处理单元)、各种专用的AI(Artificial Intelligence,人工智能)计算芯片、各种运行机器学习模型算法的计算单元、DSP(Digital SignalProcessor,数字信号处理器)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如上述地图渲染方法。例如,在一些实施例中,上述地图渲染方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到RAM 1003并由计算单元1001执行时,可以执行上文描述的地图渲染方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述地图渲染方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC(Application-Specific Integrated Circuit,专用集成电路)、ASSP(Application Specific StandardProduct,专用标准产品)、SOC(System On Chip,芯片上系统的系统)、CPLD(ComplexProgrammable Logic Device,复杂可编程逻辑设备)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、RAM、ROM、EPROM(Electrically Programmable Read-Only-Memory,可擦除可编程只读存储器)或快闪存储器、光纤、CD-ROM(Compact Disc Read-Only Memory,便捷式紧凑盘只读存储器)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode-Ray Tube,阴极射线管)或者LCD(Liquid Crystal Display,液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:LAN(LocalArea Network,局域网)、WAN(Wide Area Network,广域网)、互联网和区块链网络。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(VirtualPrivate Server,虚拟专用服务器)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
其中,需要说明的是,人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术以及机器学习/深度学习、大数据处理技术、知识图谱技术等几大方向。
根据本公开实施例的技术方案,通过从多个数据块中,确定与目标应用的显示页面中地图可视区域对应的第一地理坐标范围匹配的至少一个第一数据块;调度主线程创建的至少一个第一子线程对各第一数据块进行渲染,以得到各第一数据块对应的第一瓦片数据;对各第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将第一合并瓦片数据进行渲染并展示在地图可视区域内。由此,将地图数据集拆分为多个数据块,并通过主线程创建的至少一个第一子线程对数据块中的地图数据点进行渲染,可以避免阻塞主线程,提高渲染速度以及目标应用的响应速度,并且,仅对用户当前可见的地图可视区域进行渲染,可以减少不必要的渲染操作,进一步提高渲染效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (27)
1.一种地图渲染方法,应用于目标应用的主线程,包括:
获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围;
从多个数据块中,确定与所述第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点;
调度所述主线程创建的至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的第一瓦片数据;
对各所述第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据,并将所述第一合并瓦片数据进行渲染并展示在所述地图可视区域内。
2.根据权利要求1所述的方法,其中,所述调度所述主线程创建的至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的第一瓦片数据,包括:
获取所述目标应用的显示页面的缩放比例信息;
根据所述缩放比例信息,从至少一个瓦片层级中确定与所述缩放比例信息匹配的目标瓦片层级;
调度所述至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的且与所述目标瓦片层级匹配的第一瓦片数据。
3.根据权利要求2所述的方法,其中,所述调度所述主线程创建的至少一个第一子线程对各所述第一数据块进行渲染,包括:
判断缓存中是否存在与各所述第一数据块对应且与所述目标瓦片层级匹配的参考瓦片数据;
在所述缓存中不存在与所述第一数据块对应且与目标瓦片层级匹配的参考瓦片数据的情况下,调度所述至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的与所述目标瓦片层级匹配的第一瓦片数据。
4.根据权利要求3所述的方法,其中,所述判断缓存中是否存在与各所述第一数据块对应且与所述目标瓦片层级匹配的参考瓦片数据之后,所述方法还包括:
在所述缓存中存在与各所述第一数据块中的第二数据块对应且与目标瓦片层级匹配的参考瓦片数据的情况下,调度所述至少一个第一子线程对各所述第一数据块中除所述第二数据块之外的第三数据块进行渲染,以得到所述第三数据块对应的且与所述目标瓦片层级匹配的第二瓦片数据;
将所述第二数据块对应的参考瓦片数据与所述第三数据块对应的第二瓦片数据进行合并,得到第二合并瓦片数据;
将所述第二合并瓦片数据进行渲染并展示在所述地图可视区域内。
5.根据权利要求3或4所述的方法,其中,所述方法还包括:
将所述第三数据块对应的且与所述目标瓦片层级匹配的第二瓦片数据存入所述缓存;
或者,
将各所述第一数据块对应的且与所述目标瓦片层级匹配的第一瓦片数据存入所述缓存。
6.根据权利要求1所述的方法,其中,所述方法还包括:
从所述多个数据块中确定至少一个第四数据块,其中,所述第四数据块与所述第一数据块相邻,和/或,所述第四数据块与所述第一数据块之间的距离小于设定距离阈值;
调度所述主线程创建的至少一个第二子线程,对各所述第四数据块进行渲染,以得到各所述第四数据块对应的且与目标瓦片层级匹配的第三瓦片数据;其中,所述目标瓦片层级是根据所述显示页面的缩放比例信息确定的;
将各所述第四数据块对应的第三瓦片数据存入缓存。
7.根据权利要求6所述的方法,其中,所述方法还包括:
响应于对所述地图可视区域的滑动操作,获取所述地图可视区域对应的第二地理坐标范围;
从所述多个数据块中,确定与所述第二地理坐标范围匹配的至少一个第五数据块;
在所述缓存中存在与各所述第五数据块对应且与所述目标瓦片层级匹配的第四瓦片数据的情况下,对各所述第五数据块对应的第四瓦片数据进行合并,得到第三合并瓦片数据;
将所述第三合并瓦片数据进行渲染并展示在所述地图可视区域内。
8.根据权利要求1所述的方法,其中,所述获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围,包括:
获取目标位置信息,其中,所述目标位置信息包括所述目标应用所在设备的定位位置或所述目标应用中输入的搜索位置;
获取所述目标应用的显示页面的缩放比例信息;
根据所述目标位置信息、所述缩放比例信息和所述地图可视区域的尺寸信息,确定所述地图可视区域对应的第一地理坐标范围。
9.根据权利要求1所述的方法,其中,所述调度所述主线程创建的至少一个第一子线程对各所述第一数据块进行渲染,得到各所述第一数据块对应的第一瓦片数据,包括:
获取所述第一数据块的第一数量;
获取配置信息,其中,所述配置信息用于指示每个所述第一子线程允许处理的数据块的第二数量;
根据所述第一数量和所述第二数量,确定待创建的所述第一子线程的第三数量;
创建所述第三数量的第一子线程,并调度所述第三数量的第一子线程对所述第一数量的第一数据块进行渲染,以得到各所述第一数据块对应的第一瓦片数据。
10.根据权利要求1所述的方法,其中,所述从多个数据块中,确定与所述地理坐标范围匹配的至少一个第一数据块之前,所述方法还包括:
向服务端发送数据获取请求;其中,所述数据获取请求中携带目标位置信息和所述显示页面的缩放比例信息,所述目标位置信息包括所述目标应用所在设备的定位位置或所述目标应用中输入的搜索位置;
接收所述服务端响应于所述数据获取请求所发送的数据获取响应;其中,所述数据获取响应用于指示所述地图数据集,所述地图数据集是根据所述缩放比例信息和所述目标位置信息从全量数据集中获取的;
将所述地图数据集中的各地图数据点,按照地理空间位置进行划分,以得到所述多个数据块。
11.根据权利要求10所述的方法,其中,所述数据获取响应携带目标数据,所述目标数据是对地图数据集进行压缩和编码得到的;
所述将所述地图数据集中的各地图数据点,按照地理空间位置进行划分,以得到所述多个数据块之前,所述方法还包括:
对所述目标数据进行解码和解压缩,以得到所述地图数据集;
或者,
调度所述主线程创建的至少一个第三子线程,对所述目标数据进行解码和解压缩,以得到所述地图数据集。
12.根据权利要求1所述的方法,其中,所述对各所述第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据之前,所述方法还包括:
销毁所述至少一个第一子线程,以释放所述至少一个第一子线程所占用的资源。
13.一种地图渲染装置,应用于目标应用的主线程,包括:
获取模块,用于获取目标应用的显示页面中地图可视区域对应的第一地理坐标范围;
确定模块,用于从多个数据块中,确定与所述第一地理坐标范围匹配的至少一个第一数据块;其中,同一数据块中包含地图数据集中同一区域内的各地图数据点;
调度模块,用于调度所述主线程创建的至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的第一瓦片数据;
合并模块,用于对各所述第一数据块对应的第一瓦片数据进行合并,得到第一合并瓦片数据;
第一处理模块,用于将所述第一合并瓦片数据进行渲染并展示在所述地图可视区域内。
14.根据权利要求13所述的装置,其中,所述调度模块,用于:
获取所述目标应用的显示页面的缩放比例信息;
根据所述缩放比例信息,从至少一个瓦片层级中确定与所述缩放比例信息匹配的目标瓦片层级;
调度所述至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的且与所述目标瓦片层级匹配的第一瓦片数据。
15.根据权利要求14所述的装置,其中,所述调度模块,用于:
判断缓存中是否存在与各所述第一数据块对应且与所述目标瓦片层级匹配的参考瓦片数据;
在所述缓存中不存在与所述第一数据块对应且与目标瓦片层级匹配的参考瓦片数据的情况下,调度所述至少一个第一子线程对各所述第一数据块进行渲染,以得到各所述第一数据块对应的与所述目标瓦片层级匹配的第一瓦片数据。
16.根据权利要求15所述的装置,其中,
所述调度模块,还用于:在所述缓存中存在与各所述第一数据块中的第二数据块对应且与目标瓦片层级匹配的参考瓦片数据的情况下,调度所述至少一个第一子线程对各所述第一数据块中除所述第二数据块之外的第三数据块进行渲染,以得到所述第三数据块对应的且与所述目标瓦片层级匹配的第二瓦片数据;
所述合并模块,还用于:将所述第二数据块对应的参考瓦片数据与所述第三数据块对应的第二瓦片数据进行合并,得到第二合并瓦片数据;
所述第一处理模块,还用于:将所述第二合并瓦片数据进行渲染并展示在所述地图可视区域内。
17.根据权利要求15或16所述的装置,其中,所述装置还包括:
第一存储模块,用于将所述第三数据块对应的且与所述目标瓦片层级匹配的第二瓦片数据存入所述缓存;或者,将各所述第一数据块对应的且与所述目标瓦片层级匹配的第一瓦片数据存入所述缓存。
18.根据权利要求13所述的装置,其中,
所述确定模块,还用于:从所述多个数据块中确定至少一个第四数据块,其中,所述第四数据块与所述第一数据块相邻,和/或,所述第四数据块与所述第一数据块之间的距离小于设定距离阈值;
所述调度模块,还用于:调度所述主线程创建的至少一个第二子线程,对各所述第四数据块进行渲染,以得到各所述第四数据块对应的且与目标瓦片层级匹配的第三瓦片数据;其中,所述目标瓦片层级是根据所述显示页面的缩放比例信息确定的;
所述装置还包括:
第二存储模块,用于将各所述第四数据块对应的第三瓦片数据存入缓存。
19.根据权利要求18所述的装置,其中,
所述获取模块,还用于:响应于对所述地图可视区域的滑动操作,获取所述地图可视区域对应的第二地理坐标范围;
所述确定模块,还用于:从所述多个数据块中,确定与所述第二地理坐标范围匹配的至少一个第五数据块;
所述合并模块,还用于:在所述缓存中存在与各所述第五数据块对应且与所述目标瓦片层级匹配的第四瓦片数据的情况下,对各所述第五数据块对应的第四瓦片数据进行合并,得到第三合并瓦片数据;
所述第一处理模块,还用于:将所述第三合并瓦片数据进行渲染并展示在所述地图可视区域内。
20.根据权利要求13所述的装置,其中,所述获取模块,用于:
获取目标位置信息,其中,所述目标位置信息包括所述目标应用所在设备的定位位置或所述目标应用中输入的搜索位置;
获取所述目标应用的显示页面的缩放比例信息;
根据所述目标位置信息、所述缩放比例信息和所述地图可视区域的尺寸信息,确定所述地图可视区域对应的第一地理坐标范围。
21.根据权利要求13所述的装置,其中,所述调度模块,用于:
获取所述第一数据块的第一数量;
获取配置信息,其中,所述配置信息用于指示每个所述第一子线程允许处理的数据块的第二数量;
根据所述第一数量和所述第二数量,确定待创建的所述第一子线程的第三数量;
创建所述第三数量的第一子线程,并调度所述第三数量的第一子线程对所述第一数量的第一数据块进行渲染,以得到各所述第一数据块对应的第一瓦片数据。
22.根据权利要求13所述的装置,其中,所述装置还包括:
发送模块,用于向服务端发送数据获取请求;其中,所述数据获取请求中携带目标位置信息和所述显示页面的缩放比例信息,所述目标位置信息包括所述目标应用所在设备的定位位置或所述目标应用中输入的搜索位置;
接收模块,用于接收所述服务端响应于所述数据获取请求所发送的数据获取响应;其中,所述数据获取响应用于指示所述地图数据集,所述地图数据集是根据所述缩放比例信息和所述目标位置信息从全量数据集中获取的;
划分模块,用于将所述地图数据集中的各地图数据点,按照地理空间位置进行划分,以得到所述多个数据块。
23.根据权利要求22所述的装置,其中,所述数据获取响应携带目标数据,所述目标数据是对地图数据集进行压缩和编码得到的;
所述装置还包括:
第二处理模块,用于对所述目标数据进行解码和解压缩,以得到所述地图数据集;或者,调度所述主线程创建的至少一个第三子线程,对所述目标数据进行解码和解压缩,以得到所述地图数据集。
24.根据权利要求13所述的装置,其中,所述装置还包括:
销毁模块,用于销毁所述至少一个第一子线程,以释放所述至少一个第一子线程所占用的资源。
25.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的地图渲染方法。
26.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-12中任一项所述的地图渲染方法。
27.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-12中任一项所述地图渲染方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311166950.7A CN117270834A (zh) | 2023-09-11 | 2023-09-11 | 地图渲染方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311166950.7A CN117270834A (zh) | 2023-09-11 | 2023-09-11 | 地图渲染方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117270834A true CN117270834A (zh) | 2023-12-22 |
Family
ID=89211465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311166950.7A Pending CN117270834A (zh) | 2023-09-11 | 2023-09-11 | 地图渲染方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117270834A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117556110A (zh) * | 2024-01-12 | 2024-02-13 | 成都四方伟业软件股份有限公司 | 一种热力图数据处理方法、热力图生成方法以及装置 |
-
2023
- 2023-09-11 CN CN202311166950.7A patent/CN117270834A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117556110A (zh) * | 2024-01-12 | 2024-02-13 | 成都四方伟业软件股份有限公司 | 一种热力图数据处理方法、热力图生成方法以及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8878851B2 (en) | Method and system for streaming documents, e-mail attachments and maps to wireless devices | |
US9300818B2 (en) | Information processing apparatus and method | |
CN113368492A (zh) | 渲染的方法、装置 | |
US11470336B2 (en) | Method for transcoding video and related electronic device | |
CN113453073B (zh) | 一种图像渲染方法、装置、电子设备及存储介质 | |
CN117270834A (zh) | 地图渲染方法、装置、电子设备和存储介质 | |
CN111931472A (zh) | 页面表格渲染方法、装置、电子设备及计算机可读介质 | |
EP3828766A2 (en) | Method, apparatus, sotrage medium and program for generating image | |
US20230102804A1 (en) | Method of rectifying text image, training method, electronic device, and medium | |
CN113138827A (zh) | 展示数据的方法、装置、电子设备和介质 | |
US20220343512A1 (en) | Method and apparatus of processing image, electronic device, and storage medium | |
CN113347276B (zh) | 一种基于gis的移动式访问系统 | |
US11557047B2 (en) | Method and apparatus for image processing and computer storage medium | |
CN113839998A (zh) | 图像数据传输方法、装置、设备、存储介质及程序产品 | |
CN113190517A (zh) | 数据集成方法、装置、电子设备和计算机可读介质 | |
CN113495933A (zh) | 一种矢量瓦片显示方法及系统 | |
US20200202479A1 (en) | Method and Apparatus for Processing a Video Frame | |
CN115904240A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN111222302A (zh) | 网页渲染的控制方法、控制装置以及计算机可读介质 | |
CN114356475A (zh) | 一种显示处理方法、装置、设备及存储介质 | |
CN113656533A (zh) | 一种树形控件处理方法、装置及电子设备 | |
CN112306413A (zh) | 用于访问内存的方法、装置、设备以及存储介质 | |
CN112887426A (zh) | 信息流的推送方法、装置、电子设备以及存储介质 | |
CN114461944B (zh) | 搜索结果的展示方法、装置及电子设备 | |
CN111562962B (zh) | 画面渲染方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |