CN110264542B - 在线绘制地图海量线的方法 - Google Patents

在线绘制地图海量线的方法 Download PDF

Info

Publication number
CN110264542B
CN110264542B CN201910459982.3A CN201910459982A CN110264542B CN 110264542 B CN110264542 B CN 110264542B CN 201910459982 A CN201910459982 A CN 201910459982A CN 110264542 B CN110264542 B CN 110264542B
Authority
CN
China
Prior art keywords
map
broken line
mass
lines
value
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.)
Active
Application number
CN201910459982.3A
Other languages
English (en)
Other versions
CN110264542A (zh
Inventor
杨奇泽
李琳琳
徐畅
殷豪祥
赵鸿鸣
胡宏栋
朱磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Supcon Information Industry Co Ltd
Original Assignee
Zhejiang Supcon Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Supcon Information Industry Co Ltd filed Critical Zhejiang Supcon Information Industry Co Ltd
Priority to CN201910459982.3A priority Critical patent/CN110264542B/zh
Publication of CN110264542A publication Critical patent/CN110264542A/zh
Application granted granted Critical
Publication of CN110264542B publication Critical patent/CN110264542B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种在线绘制地图海量线的方法,包括如下步骤:获取海量线数据,判断海量线是否具有权重,绘制海量线权重,海量线常规绘制。本发明具有能够实时获取海量线的数据,并将海量线在线绘制到地图上;能在用户查看地图时实时动态地绘制海量线,保证使用过程的流畅性;提升了用户体验,解决了底图发布成本高、数据更改不灵活的问题的特点。

Description

在线绘制地图海量线的方法
技术领域
本发明涉及在线绘制地图海量线技术领域,尤其是涉及一种实现在地图上实时动态地绘制海量线,并能够在绘制海量线的同时保证页面的流畅性的在线绘制地图海量线的方法。
背景技术
在移动应用中,主流的地图服务有高德地图、百度地图和ArcGis等,在地图展示过程中,实时的海量线绘制会造成地图页面卡顿,用户体验差。常规的做法是将海量线事先绘制到地图上,然后将绘制海量线的地图以底图的形式发布,当用户需要展示海量线时直接调用发布好的底图即可完成展示,这一方法很好的解决了卡顿的问题,且只需按照要展示的层级选择相应的海量线底图即可,对于地图开发人员来说使用简单,且展示效果好。
但上述解决方案通常都不是免费进行的,需要通过购买会员的形式获取底图发布功能;且发布底图仅仅适用于绘制的海量线是固定的情况下,若在海量线的数量或者坐标不确定,或无法事先获取的情况下,发布海量线底图的方式将无法解决问题。
发明内容
本发明的发明目的是为了克服现有技术在地图展示过程中实时的海量线绘制会造成地图页面卡顿的不足,提供了一种在地图上实时动态地绘制海量线,并能够在绘制海量线的同时保证页面的流畅性的在线绘制地图海量线的方法。
为了实现上述目的,本发明采用以下技术方案:
一种在线绘制地图海量线的方法,包括如下步骤:
(1-1)获取海量线数据;
(1-2)判断海量线是否具有权重;
当海量线存在权重且为规定内的数值时表明所述海量线有权重,进入(1-3);当海量线的权重为null或无权重参数时,表明海量线无权重,进入(1-4);
(1-3)绘制海量线权重;
(1-4)海量线常规绘制。
本发明摒弃了常规底图发布的方式,能够实时获取海量线的数据,并将海量线在线绘制到地图上;能在用户查看地图时实时动态地绘制海量线,并保证使用过程的流畅性;能够处理十万级的海量线,并保证地图页面流畅,大大提升了绘制海量线的效率,提升了用户体验,解决了底图发布成本高、数据更改不灵活的问题。
作为优选,步骤(1-3)包括如下步骤:
设定集合X为全体数据集合,以自定义折线对象的形式进行存储;
设定集合A为屏幕范围内展示的优先级最高的不超过Max条折线的集合,以地图折线对象形式进行存储;
设定集合B为缓存复用地图折线对象集合;
(2-1)初始化集合X、集合A和集合B;
(2-2)将海量线进行优先级排序,并按优先级从高到低存入集合X中;
(2-3)清除A中的不符合要求的折线,并初始化变量N=0;
(2-4)按优先级从高到低遍历X中的折线,取X中第N条折线数据,并做出判断;
当N小于X的长度或A的长度大于Max时,进入(2-5);
否则结束遍历,等待地图可视区域变化或地图层级改变;
(2-5)判断第N条折线的权重L是否小于当前地图层级L1;
若L小于L1,则使N值增加1,进入(2-4);
否则,进入(2-6);
(2-6)判断第N条折线是否在地图可视范围内;
若不在屏幕可视范围内,则使N值增加1,进入(2-4);
否则,进入(2-7);
(2-7)判断第N条折线是否已展示到地图上;
遍历A中的折线对象,查看第N条折线的数据,若第N条折线有折线对象,则表明该折线已展示到地图上,否则没有展示到地图上;
若已展示在地图上,则使N值增加1进入(2-4);
否则,遍历集合B中的地图折线对象,查看折线对象是否已经创建;
若折线对象已经创建,则获取B中已创建的地图折线对象T,添加T到地图组件中进行展示,并添加到A中,使N值增加1进入(2-4);
若折线对象没有创建,则重新创建地图折线对象T1,添加T1到地图组件中进行展示,并添加到A中,使N值增加1进入(2-4)。
作为优选,(2-3)包括如下步骤:
(3-1)遍历A中所有地图折线数据,并初始化变量M=0;
(3-2)判断M是否大于A的长度;
若大于,则遍历结束,进入(3-4);
否则,进入(3-3);
(3-3)判断M对应的地图折线对象Z中的权重是否小于当前地图的层级;
若小于当前地图的层级,则将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,使M值增加1进入(3-2)继续下一次遍历;
否则,进入(3-4);
(3-4)判断M对应的地图折线对象Z是否在地图可视范围内;
若在可视范围内,则使M值增加1进入(3-2),继续下一次遍历;
否则,则将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,使M值增加1进入(3-2)继续下一次遍历。
作为优选,NUM为临界值,MAX为折线集合数最大值,(1-4)包括如下步骤:
(4-1)初始化集合X、集合A和集合B;
(4-2)将海量线进行优先级排序,并按优先级从高到低存入集合X中;
(4-3)清除A中不符合要求的折线,并初始化变量N=0;
(4-3-1)遍历A中所有地图折线数据,并初始化变量M=0;
(4-3-2)判断M是否大于A的长度;
若大于A的长度,则遍历结束,进入(4-3-4);
否则,进入(4-3-3);
(4-3-3)判断M对应的地图折线对象Z是否在地图可视范围内;
若在可视范围内,则使M值增加1进入(4-3-2),继续下一次遍历;
否则,进入(4-3-4);
(4-3-4)判断第M条折线映射到屏幕上的长度是否大于NUM;
若大于,则使M值增加1进入(4-3-2),继续下一次遍历;
否则,将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,使M值增加1进入(4-3-2)继续下一次遍历;
(4-4)按优先级从高到低遍历X折线,取X中第N条折线数据,并做出判断;
当N小于X的长度或A的长度大于Max时,进入(4-5);
否则结束遍历,等待地图可视区域变化或地图层级改变;
(4-5)判断第N条折线是否在地图可视范围内;
若不在屏幕可视范围内,则N值增加1,进入(4-4);
否则,进入(4-6);
(4-6)判断第N条折线映射到屏幕上的长度是否大于NUM;
若小于,则使N增加1,进入(4-4),继续下一次遍历;
否则,进入(4-7);
(4-7)判断第N条折线是否已展示到地图上;
遍历A中的折线对象,查看第N条折线的数据,若第N条折线的数据有对应的折线对象,则表明该折线已展示到地图上,否则没有展示到地图上;
若已展示在地图上,则使N值增加1进入(4-4);
否则,遍历集合B中的地图折线对象,查看折线对象是否已经创建;
若折线对象已经创建,则获取B中已创建的地图折线对象T,添加T到地图组件中进行展示,并添加到A中,使N增加1进入(4-4);
若折线对象没有创建,则重新创建地图折线对象T1,添加T1到地图组件中进行展示,并添加到A中,使N增加1进入(4-4)。
作为优选,有权重的海量线优先级排序方法如下:
(5-1)获取每条折线的长度;
对于只有两点组成的折线,则两点之间的线段长度表示折线的长度,利用两点的经纬度坐标计算两点间的距离;
对于有多个点组成的折线,计算出相邻两点的线段长度,然后选取最长的线段作为该折线的长度;
(5-2)对海量线进行排序,按照权重值从小到大的顺序进行排序,当两条折线权重相同时,按照长度从长到短的顺序进行排序;将排序结果存入集合X中;
在海量线展示过程中,权重值代表该折线所展示在地图上的最佳层级,权重值大于地图层级时按优先级进行展示,小于地图层级时不进行展示。
作为优选,无权重海量线优先级排序方法包括步骤如下:
(6-1)获取每条折线的长度;
对于只有两点组成的折线,则两点之间的线段长度则表示折线的长度,其计算方式是利用两点的经纬度坐标计算两点间的距离;
对于有多个点组成的折线,计算出相邻两点的线段长度,然后选取最长的线段作为该折线的长度;
(6-2)比较所有折线的长度,并按从长到短的方式排序存入集合X中。
因此,本发明具有如下有益效果:能够实时获取海量线的数据,并将海量线在线绘制到地图上;能在用户查看地图时实时动态地绘制海量线,并保证使用过程的流畅性;能够处理十万级的海量线,并保证地图页面流畅,大大提升了绘制海量线的效率,提升了用户体验,解决了底图发布成本高、数据更改不灵活的问题。
附图说明
图1是本发明的一种海量线绘制总体流程图;
图2是本发明的一种海量线权重绘制流程图;
图3是本发明的一种海量线常规绘制流程图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
如图1所示的实施例是一种在线绘制地图海量线的方法,包括如下步骤:
步骤一:获取海量线数据;
获取海量线是海量线绘制的前提,考虑到海量线数据庞大(本发明采用了十万级的折线,每个折线有至少两个点的经纬度坐标组成),本发明采用文件形式从服务器获取,并存储到终端。获取方式不受限制,开发人员可根据用户需求而自由选择。
针对于海量线的存储格式,本发明采用json数组的形式将每条折线的起点、中间点、终点对应的经纬度坐标以及权重值进行存储;
步骤二:判断海量线是否具有权重;
本发明从实际使用情况出发,针对常用海量线的特点提出了两种不同的解决方案:海量线权重绘制和海量线无权重(常规)绘制,下文称为海量线常规绘制。
海量线的权重是指海量线对应的地图显示层级,对于有权重需求的海量线,用户期望在地图到达某一层级时只有大于等于该层级的折线可以被显示出来,小于该层级的折线无需展示。离地图层级越近的权重,其对应的折线显示优先级越高。
对于没有层级概念的海量线,即无权重的海量线,则无论地图在哪个层级,所有折线都应被显示出来,无需根据层级来判断折线的优先级。
本发明根据json数组中权重值来判断该海量线有无权重,当权重值存在且为规定内的数值时表明该海量线有权重,进入步骤三;否则当权重值为null或无权重参数时表明该海量线无权重,进入步骤四;
通常情况下对于某一个应用,其海量线本身的特征是一致的,即要么是有权重的海量线,要么为无权重的海量线;因此步骤三和步骤四一般只会运行一个,因此对于集合X、集合A和集合B并不会既包含有权重的海量线信息又包含无权重的海量线信息;
步骤三:海量线权重绘制
该步骤流程图如图2所示,具体步骤如下:
第一步:初始化集合X、集合A和集合B;
第二步:将海量线按方法1进行优先级排序,并按优先级从高到低存入集合X中;
第三步:清除A中不符合要求的折线,并初始化变量N=0;
清除A中不符合要求的折线的步骤如下:
1.遍历A中所有地图折线数据,并初始化变量M=0;
2.判断M是否大于A的长度;
若大于,则遍历结束,跳转到第四步;
否则,进入第3步;
3.判断M对应的地图折线对象Z中的权重是否小于当前地图的层级;
若小于,则该折线不需要显示,则将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,M=M+1进入第2步继续下一次遍历;
否则,进入第4步;
4.根据方法6判断M对应的地图折线对象Z是否在地图可视范围内;
若在可视范围内,则M=M+1进入第2步,继续下一次遍历;
否则,则将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,M=M+1进入第2步继续下一次遍历;
第四步:按优先级从高到低遍历X中的折线,取X中第N条折线数据,并做出判断;
当N小于X的长度或A的长度大于Max时,进入第五步;
否则结束遍历,等待地图可视区域变化或地图层级改变;
第五步:判断第N条折线的权重L是否小于当前地图层级L1;
若小于,则N=N+1跳转到第四步;
否则,进入第六步;
第六步:根据方法6判断第N条折线是否在地图可视范围内;
若不在屏幕可视范围内,则N=N+1跳转到第四步;
否则,进入第七步;
第七步:判断第N条折线是否已展示到地图上;
遍历A中的折线对象,查看否有第N条折线的数据,有对应的折线对象,则表明该折线已展示到地图上,否则没有展示到地图上;
若已展示在地图上,则N=N+1跳转到第四步;
否则,遍历集合B中的地图折线对象,查看折线对象是否已经创建;
若已经创建,则获取B中已创建的地图折线对象T,添加T到地图组件中进行展示,并添加到A中。N=N+1跳转到第四步;
若没有创建,则重新创建地图折线对象T1,添加T1到地图组件中进行展示,并添加到A中。N=N+1跳转到第四步;
步骤四:海量线常规绘制
该步骤流程图如图3所示,具体步骤如下:
第一步:初始化集合X、集合A和集合B;
第二步:将海量线按方法2进行优先级排序,并按优先级从高到低存入集合X中;
第三步:清除A中不符合要求的折线,并初始化变量N=0;
清除A中不符合要求的折线的步骤如下:
1.遍历A中所有地图折线数据,并初始化变量M=0;
2.判断M是否大于A的长度;
若大于,则遍历结束,跳转到第四步;
否则,进入第3步;
3.根据方法6判断M对应的地图折线对象Z是否在地图可视范围内;
若在可视范围内,则M=M+1进入第2步,继续下一次遍历;
否则,进入第4步;
4.判断第M条折线映射到屏幕上的长度是否大于NUM;
若大于,则M=M+1进入第2步,继续下一次遍历;
否则,将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,M=M+1进入第2步继续下一次遍历;
第四步:按优先级从高到低遍历X中的折线,取X中第N条折线数据,并做出判断;
当N小于X的长度或A的长度大于Max时,进入第五步;
否则结束遍历,等待地图可视区域变化或地图层级改变;
第五步:根据方法6判断第N条折线是否在地图可视范围内;
若不在屏幕可视范围内,则N=N+1跳转到第四步;
否则,进入第六步;
第六步:利用方法4判断第N条折线映射到屏幕上的长度是否大于NUM;
若小于,则N=N+1进入第四步,继续下一次遍历;
否则,进入第七步;
第七步:判断第N条折线是否已展示到地图上;
遍历A中的折线对象,查看否有第N条折线的数据,有对应的折线对象,则表明该折线已展示到地图上,否则没有展示到地图上;
若已展示在地图上,则N=N+1跳转到第四步;
否则,遍历集合B中的地图折线对象,查看折线对象是否已经创建;
若已经创建,则获取B中已创建的地图折线对象T,添加T到地图组件中进行展示,并添加到A中。N=N+1跳转到第四步;
若没有创建,则重新创建地图折线对象T1,添加T1到地图组件中进行展示,并添加到A中。N=N+1跳转到第四步;
在地图中展示折线的实现方法,以高德地图为例:
Android:
AMap.addPolyline(new PolylineOptions().addAll(latLngs).width(10).color(Color.argb(255,1,1,1))),其中latLngs为折线点经纬度坐标数组;
iOS:
//构造折线对象
MAPolyline*commonPolyline=[MAPolyline polylineWithCoordinates:commonPolylineCoords count:4];
//在地图上添加折线对象
[_mapView addOverlay:commonPolyline];
commonPolylineCoords为折线点经纬度坐标数组
步骤五:若屏幕可视区域变化或地图层级改变时,会重新跳转到步骤三的第三步或步骤四的第三步,开启新一轮的折线清除和遍历;
以下为上文步骤中用到的集合和方法的详细说明和步骤介绍:
集合X:全体数据集合,按折线优先级从高到低进行排序,以自定义折线对象的形式进行存储;
集合A:屏幕范围内展示的优先级最高的不超过Max条折线集合,以地图折线对象形式进行存储;Max取值为400,此数量为本发明通过多款手机反复测量后得到的保证页面流畅性的最大极限值,技术人员可根据业务需要自主选择Max的值,本发明建议Max的取值不超过400;
集合B:缓存复用地图折线对象集合
方法1:有权重海量线优先级排序方法
有权重的海量线其组成部分包括点的经纬度坐标和权重两部分组成,本发明认为权重越小、长度越长的折线其优先级越高,有权重海量线优先级排序的步骤如下:
第一步:获取每条折线的长度;
对于只有两点组成的折线,则两点之间的线段长度则表示折线的长度,其计算方式是利用两点的经纬度坐标计算两点间的距离;
对于有多个点组成的折线,本发明将计算出相邻两点的线段长度,然后选取最长的线段作为该折线的长度;
第二步:对海量线进行排序,按照权重值从小到大的顺序进行排序,当两条折线权重相同时,按照长度从长到短的顺序进行排序;将排序结果存入集合X中;
在海量线展示过程中,权重值代表该折线所展示在地图上的最佳层级,权重值大于地图层级时按优先级进行展示,小于地图层级时不进行展示。
方法2:无权重海量线优先级排序方法
无权重的海量线由不同的点组成的折线,本发明对于无权重海量线优先级排序方法的步骤如下:
第一步:获取每条折线的长度;
对于只有两点组成的折线,则两点之间的线段长度则表示折线的长度,其计算方式是利用两点的经纬度坐标计算两点间的距离;
对于有多个点组成的折线,本发明计算出相邻两点的线段长度,然后选取最长的线段作为该折线的长度;
第二步:比较所有折线的长度,并按从长到短的方式排序存入集合X中;
本发明认为在海量线绘制过程中,长度越长的折线其权重值越大,因为用户视觉辨别度越大,对整体海量线展示布局影响越大。
方法3:屏幕1像素对应实际距离(单位:米)的方法
第一步:获取手机像素密度p,即一英寸对应像素个数,一英寸为0.0254米;
android系统对应为dpi,ios系统对应为ppi;
第二步:获取当前地图比例尺Scale,即屏幕1米表示实际距离Scale米;
第三步:根据公式计算屏幕1像素对应实际距离多少米;
d=(0.0254/p)*Scale表示屏幕1像素实际距离的米;
返回d;
方法4:线段映射到当前屏幕上的长度(单位:android为dp,iOS为pt);
Android系统:屏幕无关的单位为dp,其与像素px和像素密度dpi之间的关系为dp=px*(ppi/160);
iOS系统:屏幕无关的单位为pt,其与像素px和像素密度ppi之间的关系为pt=pixels*(ppi/163);
第一步:输入线段起止点;
第二步:计算线段实际距离d1;
第三步:根据公式计算线段映射到当前屏幕上的长度t;
通过方法3获取d,然后套用公式:
Android:(d1/d)*(p1/160),p1表示android系统的像素密度
iOS:(d1/d)*(p2/160),p2表示iOS系统的像素密度
利用上述公式可计算线段对应到当前地图屏幕上的dp或pt个数;
第四步:返回t;
本发明根据测试结果认为当t=8时是肉眼可识别时较为舒服的数值,故在线段判断时以t=8为临界值进行判断,当线段映射到当前屏幕上的长度小于8时隐藏对线段的展示,只有大于8时才会展示到地图上。故在步骤四中变量NUM等于8,用户也可根据自己的判断和业务需求对NUM值进行调整,本发明不限制NUM的取值,NUM值的改变并不影响整体海量线的绘制,只是对海量线的展示效果会稍有差异;
方法5:判断两点组成的线段是否在地图可视范围内
具体步骤如下:
第一步:输入某一线段的起点A1和终点坐标B1,点A1和点B1组成的线段为l;
第二步:获取地图中心点C1;该方法是在常用高德地图、百度地图等第三方地图中均有API提供,开发人员可自行查阅,本发明不再列举;
第二步:获取点D1,该点是点C1到线段l的垂足点;
高德地图可使用
Android:
calShortestDistancePoint(java.util.List<DPoint>points,DPoint point),其中points为点A和点B组成的数值,point为点C坐标;
iOS:MAGetNearestMapPointFromLine(MAMapPoint lineStart,MAMapPointlineEnd,MAMapPoint point),其中lineStart为A点坐标,lineEnd为B点坐标,point为C点坐标;
通过上述方法可直接获取D1点,
第三步:验证点D1是否在地图可视范围内;
高德地图使用
Android:polygon.contains(LatLng latLng),其中latLng为点D1,polygon为地图可视区域,该方法可判断点D1是否在地图可视范围内,该方法返回bool值;polygon通过aMap.getProjection().getVisibleRegion()方法获取;
iOS:MAMapRectContainsPoint(MAMapRect rect,MAMapPoint point);方法验证点D1是否在地图可视范围内;其中rect为可视区域,可通过visibleMapRect()方法获取;point为点D1,该方法返回bool值。
将获取到的bool直接作为方法5的返回值进行返回即可;
方法6:判断多点组成的折线是否在地图可视范围内
第一步:输入某一折线段数据;
第二步:遍历该折线段中的所有线段;
第三步:使用方法5判断某一线段是否在地图可视范围内;
若方法5返回true,则表示该线段在地图可视范围内,进而该折线在地图可视范围内,返回true,判断完毕;
若方法5返回false,表示该线段不在地图可视范围内,跳转到第二步进行下一个线段的判断;若该线段为折线的最后一条线段,则表明该折线包含的所有线段均不在地图可视范围内,即该折线不在地图可视范围内,返回false,判断完毕。
应理解,本实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

Claims (4)

1.一种在线绘制地图海量线的方法,其特征是,包括如下步骤:
(1-1)获取海量线数据;
(1-2)判断海量线是否具有权重;
当海量线存在权重且为规定内的数值时表明所述海量线有权重,进入(1-3);当海量线的权重为null或无权重参数时,表明海量线无权重,进入(1-4)海量线常规绘制;
(1-3)绘制海量线权重,包括如下步骤:设定集合X为全体数据集合,以自定义折线对象的形式进行存储;设定集合A为屏幕范围内展示的优先级最高的不超过Max条折线的集合,以地图折线对象形式进行存储;设定集合B为缓存复用地图折线对象集合;
(2-1)初始化集合X、集合A和集合B;
(2-2)将海量线进行优先级排序,并按优先级从高到低存入集合X中;
(2-3)清除A中的不符合要求的折线,并初始化变量N=0;
(2-4)按优先级从高到低遍历X中的折线,取X中第N条折线数据,并做出判断;
当N小于X的长度或A的长度小于Max时,进入(2-5);否则结束遍历,等待地图可视区域变化或地图层级改变;
(2-5)判断第N条折线的权重L是否小于当前地图层级L1;
若L小于L1,则使N值增加1,进入(2-4);否则,进入(2-6);
(2-6)判断第N条折线是否在地图可视范围内;
若不在屏幕可视范围内,则使N值增加1,进入(2-4);否则,进入(2-7);
(2-7)判断第N条折线是否已展示到地图上;
遍历A中的折线对象,查看第N条折线的数据,若第N条折线有折线对象,则表明该折线已展示到地图上,否则没有展示到地图上;若已展示在地图上,则使N值增加1进入(2-4);否则,遍历集合B中的地图折线对象,查看折线对象是否已经创建;若折线对象已经创建,则获取B中已创建的地图折线对象T,添加T到地图组件中进行展示,并添加到A中,使N值增加1进入(2-4);若折线对象没有创建,则重新创建地图折线对象T1,添加T1到地图组件中进行展示,并添加到A中,使N值增加1进入(2-4);
(1-4)海量线常规绘制,NUM为临界值,MAX为折线集合数最大值,包括如下步骤:
(4-1)初始化集合X、集合A和集合B;
(4-2)将海量线进行优先级排序,并按优先级从高到低存入集合X中;
(4-3)清除A中不符合要求的折线,并初始化变量N=0;
(4-3-1)遍历A中所有地图折线数据,并初始化变量M=0;
(4-3-2)判断M是否大于A的长度;
若大于A的长度,则遍历结束,进入(4-3-4);否则,进入(4-3-3);
(4-3-3)判断M对应的地图折线对象Z是否在地图可视范围内;
若在可视范围内,则使M值增加1进入(4-3-2),继续下一次遍历;否则,进入(4-3-4);
(4-3-4)判断第M条折线映射到屏幕上的长度是否大于NUM;若大于,则使M值增加1进入(4-3-2),继续下一次遍历;否则,将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,使M值增加1进入(4-3-2)继续下一次遍历;
(4-4)按优先级从高到低遍历X折线,取X中第N条折线数据,并做出判断;当N小于X的长度或A的长度小于Max时,进入(4-5);否则结束遍历,等待地图可视区域变化或地图层级改变;
(4-5)判断第N条折线是否在地图可视范围内;若不在屏幕可视范围内,则N值增加1,进入(4-4);否则,进入(4-6);
(4-6)判断第N条折线映射到屏幕上的长度是否大于NUM;若小于,则使N增加1,进入(4-4),继续下一次遍历;否则,进入(4-7);
(4-7)判断第N条折线是否已展示到地图上;
遍历A中的折线对象,查看第N条折线的数据,若第N条折线的数据有对应的折线对象,则表明该折线已展示到地图上,否则没有展示到地图上;若已展示在地图上,则使N值增加1进入(4-4);否则,遍历集合B中的地图折线对象,查看折线对象是否已经创建;
若折线对象已经创建,则获取B中已创建的地图折线对象T,添加T到地图组件中进行展示,并添加到A中,使N增加1进入(4-4);
若折线对象没有创建,则重新创建地图折线对象T1,添加T1到地图组件中进行展示,并添加到A中,使N增加1进入(4-4)。
2.根据权利要求1所述的在线绘制地图海量线的方法,其特征是,(2-3)包括如下步骤:
(3-1)遍历A中所有地图折线数据,并初始化变量M=0;
(3-2)判断M是否大于A的长度;
若大于,则遍历结束,进入(3-4);
否则,进入(3-3);
(3-3)判断M对应的地图折线对象Z中的权重是否小于当前地图的层级;
若小于当前地图的层级,则将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,使M值增加1进入(3-2)继续下一次遍历;
否则,进入(3-4);
(3-4)判断M对应的地图折线对象Z是否在地图可视范围内;
若在可视范围内,则使M值增加1进入(3-2),继续下一次遍历;
否则,则将Z存入集合B中进行缓存,将Z从A中删除,并将Z从地图中移除,使M值增加1进入(3-2)继续下一次遍历。
3.根据权利要求2所述的在线绘制地图海量线的方法,其特征是,有权重的海量线优先级排序方法如下:
(5-1)获取每条折线的长度;
对于只有两点组成的折线,则两点之间的线段长度表示折线的长度,利用两点的经纬度坐标计算两点间的距离;
对于有多个点组成的折线,计算出相邻两点的线段长度,然后选取最长的线段作为该折线的长度;
(5-2)对海量线进行排序,按照权重值从小到大的顺序进行排序,当两条折线权重相同时,按照长度从长到短的顺序进行排序;将排序结果存入集合X中;
在海量线展示过程中,权重值代表该折线所展示在地图上的最佳层级,权重值大于地图层级时按优先级进行展示,小于地图层级时不进行展示。
4.根据权利要求2所述的在线绘制地图海量线的方法,其特征是,无权重海量线优先级排序方法包括步骤如下:
(6-1)获取每条折线的长度;
对于只有两点组成的折线,则两点之间的线段长度则表示折线的长度,其计算方式是利用两点的经纬度坐标计算两点间的距离;
对于有多个点组成的折线,计算出相邻两点的线段长度,然后选取最长的线段作为该折线的长度;
(6-2)比较所有折线的长度,并按从长到短的方式排序存入集合X中。
CN201910459982.3A 2019-05-29 2019-05-29 在线绘制地图海量线的方法 Active CN110264542B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910459982.3A CN110264542B (zh) 2019-05-29 2019-05-29 在线绘制地图海量线的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910459982.3A CN110264542B (zh) 2019-05-29 2019-05-29 在线绘制地图海量线的方法

Publications (2)

Publication Number Publication Date
CN110264542A CN110264542A (zh) 2019-09-20
CN110264542B true CN110264542B (zh) 2023-09-05

Family

ID=67915922

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910459982.3A Active CN110264542B (zh) 2019-05-29 2019-05-29 在线绘制地图海量线的方法

Country Status (1)

Country Link
CN (1) CN110264542B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1338088A (zh) * 1999-01-25 2002-02-27 善邻股份有限公司 以多角形表面的道路地图数据的制作和用于使用的装置和方法
CN103020544A (zh) * 2013-01-04 2013-04-03 南京师范大学 一种shp线面图层数据层次加解密方法
CN105051787A (zh) * 2013-03-21 2015-11-11 株式会社吉奥技术研究所 绘图数据生成装置和绘图装置
CN106156220A (zh) * 2015-04-26 2016-11-23 上海为臻信息科技有限公司 海量地图数据在手机端的矢量实时绘制方法
CN108647336A (zh) * 2018-05-14 2018-10-12 江西理工大学 一种利用关键比例尺以及类瓦片技术处理矢量图的方法
CN109363714A (zh) * 2018-09-17 2019-02-22 深圳迈瑞生物医疗电子股份有限公司 一种超声成像设备及其超声成像方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7269801B2 (en) * 2004-03-30 2007-09-11 Autodesk, Inc. System for managing the navigational usability of an interactive map
CN106462945B (zh) * 2014-07-29 2019-06-18 谷歌有限责任公司 以不同缩放等级呈现地图数据的层级结构

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1338088A (zh) * 1999-01-25 2002-02-27 善邻股份有限公司 以多角形表面的道路地图数据的制作和用于使用的装置和方法
CN103020544A (zh) * 2013-01-04 2013-04-03 南京师范大学 一种shp线面图层数据层次加解密方法
CN105051787A (zh) * 2013-03-21 2015-11-11 株式会社吉奥技术研究所 绘图数据生成装置和绘图装置
CN106156220A (zh) * 2015-04-26 2016-11-23 上海为臻信息科技有限公司 海量地图数据在手机端的矢量实时绘制方法
CN108647336A (zh) * 2018-05-14 2018-10-12 江西理工大学 一种利用关键比例尺以及类瓦片技术处理矢量图的方法
CN109363714A (zh) * 2018-09-17 2019-02-22 深圳迈瑞生物医疗电子股份有限公司 一种超声成像设备及其超声成像方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于ArcGIS的导航电子地图道路层次融合显示解决方案研究;揭建英等;《测绘与空间地理信息》;20130425(第04期);第64-66页 *

Also Published As

Publication number Publication date
CN110264542A (zh) 2019-09-20

Similar Documents

Publication Publication Date Title
KR101140460B1 (ko) 그래픽 시스템, 꼭지점 데이터의 타일 기반 변환 방법 및 컴퓨터 판독가능한 저장 매체
US20150123999A1 (en) Method and apparatus for contextually varying amounts of imagery on a map
CN106502613B (zh) 一种加载图片的方法及装置
WO2010106018A1 (en) 3d building generalization for digital map applications
KR102340678B1 (ko) 복수의 모델들에 근거하는 객체들의 디스플레이
CN107291874B (zh) 地图点位聚合方法及装置
CN108876935A (zh) 一种在移动端快速进行房屋三维模型拼接的方法及装置
US10067950B1 (en) Systems and methods for efficiently organizing map styling information
CN114239508A (zh) 表格还原方法和装置、存储介质及电子设备
CN110264542B (zh) 在线绘制地图海量线的方法
CN110647597B (zh) 电子地图的渲染方法和装置
CN110187816A (zh) 漫画类型电子书的自动翻页方法、计算设备及存储介质
CN112767211A (zh) 救援资源推荐方法、装置、电子设备和存储介质
CN107016079B (zh) 一种知识点的展示方法及装置
CN110427583B (zh) 应用于移动端地图海量线抽稀绘制的方法
CN113034582A (zh) 位姿优化装置及方法、电子设备及计算机可读存储介质
JP7086180B2 (ja) デジタルマップの動的リスタイリング
US9275481B2 (en) Viewport-based contrast adjustment for map features
US10062193B2 (en) Attribute based map marker clustering
CN114037792B (zh) 一种Unreal Engine平台下的百万量级地下管线模型动态生成方法
US9208593B1 (en) Proximity-based detail reduction of geographic data
CN112991008A (zh) 一种位置推荐方法、装置及电子设备
CN107591080B (zh) 一种道路压盖关系的绘制方法及装置
CN112633651A (zh) 一种路段拥堵程度评价方法及装置、设备、存储介质
CN110413519A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 310053 23-25, 2 building, 352 BINKANG Road, Binjiang District, Hangzhou, Zhejiang.

Applicant after: Zhejiang zhongkong Information Industry Co.,Ltd.

Address before: 310053 23-25, 2 building, 352 BINKANG Road, Binjiang District, Hangzhou, Zhejiang.

Applicant before: ZHEJIANG SUPCON INFORMATION TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant