地图实时轨迹的绘制动画实现方法以及装置与流程

文档序号:18029978发布日期:2019-06-28 22:33阅读:1587来源:国知局
地图实时轨迹的绘制动画实现方法以及装置与流程

本发明涉及一种地图实时轨迹的绘制动画实现方法以及装置。



背景技术:

现在的地图软件里,实时绘制轨迹路线大多为静态绘制,人们在通过地图软件导航时,地图轨迹的动态展示经常产生“顿挫”感。例如当人们自驾进行导航时,地图软件里车辆所在的位置在前一时刻可能还在地图软件界面中的a坐标位置,但下一时刻可能就跳动到离a坐标位置较远的b坐标位置,这种跳动式的轨迹绘制动画不够顺畅,给人们带来非常不好的视觉体验,降低人们的使用感和体验度。



技术实现要素:

针对上述现有技术的不足,本发明所要解决的技术问题是:提供一种在轨迹绘制时降低“顿挫”感的地图实时轨迹的绘制动画实现方法以及装置。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种地图实时轨迹的绘制动画实现方法,包括以下步骤:

获取本次需要绘制轨迹点的数据包、本次时间rtc、上次绘制轨迹点的数据包以及上次时间rtl,其中,所述本次需要绘制轨迹点的数据包包括本次的经纬度坐标gpsc(x,y),所述上次绘制轨迹点的数据包包括上次的经纬度坐标gpsl(x,y);

根据本次时间rtc和上次时间rtl得到时间间隔n;

判断所述时间间隔n是否大于或等于预设的绘制轨迹时长的默认值tr;

若所述时间间隔n大于预设的绘制轨迹时长的默认值tr,则视为上一次绘制轨迹动画被延迟执行,选择预设的小于所述默认值tr的较小值mint,以使得本次绘制轨迹的时长tr等于所述预设的较小值mint;

若所述时间间隔n小于或等于预设的绘制轨迹时长的默认值tr,则所述本次的绘制轨迹的时长tr等于所述预设的绘制轨迹时长的默认值tr;

根据所述本次绘制轨迹的时长tr、本次的经纬度坐标gpsc(x,y)、上次的经纬度坐标gpsl(x,y)绘制轨迹动画;

待本次绘制完成后,保存本次绘制轨迹的值。

进一步的,在根据所述本次绘制轨迹的时长tr、本次的经纬度坐标gpsc(x,y)、上次的经纬度坐标gpsl(x,y)绘制轨迹动画的过程中,具体通过以下方式绘制轨迹动画:

在本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间预设m个插值点,所述m个插值点将所述本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)等分成m+1个段;

获取本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)的方位角θ;

根据方位角θ、本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)得到该两经纬度坐标点之间的距离d;

根据所述方位角θ、所述距离d以及上次的经纬度坐标gpsl(x,y)分别得到预设于本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间的m个插值点的经纬度坐标gps(x0,y0)、gps(x1,y1)、……、gps(xm,ym);

根据所述上次的经纬度坐标gpsl(x,y)、m个插值点以及本次的上次的经纬度坐标gpsc(x,y)(x,y)得到每相邻两个插值点的绘制轨迹的时长为tr’=tr/(m+1);

根据所述每相邻两个点的绘制轨迹的时长tr’,依次绘制上次的经纬度坐标gpsl(x,y)到插值点gps(x0,y0)的轨迹、插值点gps(x0,y0)到插值点gps(x1,y1)的轨迹、……、插值点gps(xm,ym)到本次的经纬度坐标gpsc(x,y)的轨迹。

进一步的,所述本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)的方位角θ通过以下公式获得:

θ=arccos(cos(90-gpscw)×cos(90-gpslw)+sin(90-gpscw)×sin(90-gpslw)×cos(gpscj-gpslj))(一)

式(一)中,gpscw表示本次的经纬度坐标的纬度,gpslw表示上次的经纬度坐标的纬度,gpscj表示本次的经纬度坐标的经度,gpslj表示上次的经纬度坐标的经度。

进一步的,在根据本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)得到该两经纬度坐标点之间的距离d的步骤中,具体通过以下公式得到所述距离d:

l=r*(θ÷180*π)(二)

式(二)中,r为地球的半径,π为圆周率。

进一步的,在根据所述方位角θ、所述距离d以及上次的经纬度坐标gpsl(x,y)分别

得到预设于本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间的m个插值点的经纬度坐标gps(x0,y0)、gps(x1,y1)、……、gps(xm,ym)的步骤中,具体通过以下公式得到每一个插值点的经纬度坐标:

θn=θ÷(m+1)(三)

式(三)中,θn为第n个插值点与上次的经纬度坐标gpsl(x,y)的方位角,其中,n小于等于m;

a=arccos(cos(90-gpslw)×cos(θ)+sin(90-gpslw)×sin(θ)×cos(θn))(四)

式(四)中,a为第n个插值点的纬度变量值,相对于90度;

c=arcsin(sin(θ)×sin(θn)÷sin(a))(五)

式(五)中,c为第n个插值点的经度变量值,相对于上次的经纬度坐标的经度gpslj。

xnj=gpslj+c(六)

式(六)中,所述xnj为第n个插值点的经度;

xnw=90-a(七)

式(七)中,所述xnw为n个插值点的纬度。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种地图实时轨迹的绘制动画实现装置,包括:

第一获取模块,用于本次需要绘制轨迹点的数据包以及上次绘制轨迹点的数据包,其中,所述本次需要绘制轨迹点的数据包包括本次的经纬度坐标gpsc(x,y)以及本次时间rtc,所述上次绘制轨迹点的数据包包括上次的经纬度坐标gpsl(x,y)以及上次时间rtl;;

时间间隔计算模块,用于根据本次时间rtc和上次时间rtl得到时间间隔n;

判断模块,用于判断所述时间间隔n是否大于或等于预设的绘制轨迹时长的默认值tr;

绘制轨迹时长确定模块,用于当所述判断模块判断得到所述时间间隔n大于预设的绘制轨迹时长的默认值tr,则视为上一次绘制动画被延迟执行,选择预设的较小值mint,以使得本次绘制轨迹的时长tr等于所述预设的较小值mint;还用于当所述判断模块判断得到所述时间间隔n小于或等于预设的绘制轨迹时长的默认值tr,则所述本次的绘制轨迹的时长tr等于所述预设的绘制轨迹时长的默认值tr;

轨迹动画绘制模块,用于根据所述本次绘制轨迹的时长tr、本次的经纬度坐标gpsc(x,y)、上次的经纬度坐标gpsl(x,y)绘制轨迹动画;

保存模块,用于待本次绘制完成后,保存本次请求的值,以使得gpsl(x,y)=gpsc(x,y),pl=pc,rtl=rtc。

进一步的,所述轨迹动画绘制模块包括:

插值点预设模块,用于在本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间预设m个插值点,所述m个插值点将所述本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)等分成m+1个段;

第二获取模块,用于获取本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)的方位角θ;

第三获取模块,用于根据方位角θ、本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)得到该两经纬度坐标点之间的距离d;

插值点经纬坐标获取模块,用于根据所述方位角θ、所述距离d以及上次的经纬度坐标gpsl(x,y)分别得到预设于本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间的m个插值点的经纬度坐标gps(x0,y0)、gps(x1,y1)、……、gps(xm,ym);

相邻两插值点绘制轨迹的时长获取模块,用于根据所述上次的经纬度坐标gpsl(x,y)、m个插值点以及本次的上次的经纬度坐标gpsc(x,y)(x,y)得到每相邻两个插值点的绘制轨迹的时长为tr’=tr/(m+1);

轨迹动画绘制子模块,用于根据所述每相邻两个点的绘制轨迹的时长tr’,依次绘制上次的经纬度坐标gpsl(x,y)到插值点gps(x0,y0)的轨迹、插值点gps(x0,y0)到插值点gps(x1,y1)的轨迹、……、插值点gps(xm,ym)到本次的经纬度坐标gpsc(x,y)的轨迹。

进一步的,所述插值点经纬坐标获取模块还用于通过以下公式获取所述方位角θ:

θ=arccos(cos(90-gpscw)×cos(90-gpslw)+sin(90-gpscw)×sin(90-gpslw)×cos(gpscj-gpslj)),其中,gpscw表示本次的经纬度坐标的纬度,gpslw表示上次的经纬度坐标的纬度,gpscj表示本次的经纬度坐标的经度,gpslj表示上次的经纬度坐标的经度。

进一步的,所述第二获取模块还用于通过以下公式得到所述距离d:

l=r*(θ÷180*π),其中,r为地球的半径,π为圆周率。

10、如权利要求6所述的地图实时轨迹的绘制动画实现装置,其特征在于,所述插值点经纬坐标获取模块还用于通过以下公式得到每一个插值点的经纬度坐标:

θn=θ÷(m+1),其中,θn为第n个插值点与上次的经纬度坐标gpsl(x,y)的方位角,其中,n小于等于m;

a=arccos(cos(90-gpslw)×cos(θ)+sin(90-gpslw)×sin(θ)×cos(θn)),其中,a为第n个插值点的纬度变量值,相对于90度;

c=arcsin(sin(θ)×sin(θn)÷sin(a)),其中,c为第n个插值点的经度变量值,相对于上次的经纬度坐标的经度gpslj。

xnj=gpslj+c,其中,所述xnj为第n个插值点的经度;

xnw=90-a,其中,所述xnw为n个插值点的纬度。

本发明的地图实时轨迹的绘制动画实现方法以及装置,一方面,不像现在技术那样一味的采用绘制轨迹时长的默认值,而是巧妙地在每一次绘制之前均通过时间间隔与绘制轨迹时长的默认值进行判断,轨迹绘制的动画延迟和实际数据绘制上报的间隔可以纠正,极大的降低了现有软件中轨迹动画展示的“卡顿”现象。另一方面,在地图绘制轨迹时,利用插值细分的方式,算出插值坐标点,用细微动画变化到达整体轨迹动画绘制效果,根据定义插值个数,计算出距离比较接近的gps插值点,利用少距离的移动,来达到总体轨迹绘制的动画实现。通过以上两个方面可以实现轨迹绘制的渐动效果,提高人们的使用感和体验感,提高人们的满意度。

附图说明

图1是本发明地图实时轨迹的绘制动画实现方法一实施例的流程图。

图2是本发明地图实时轨迹的绘制动画实现方法中绘制算法解析图。

图3是本发明地图实时轨迹的绘制动画实现装置一实施例的方框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1及图2,本发明地图实时轨迹的绘制动画实现方法包括以下步骤:

s101、获取本次需要绘制轨迹点的数据包以及上次绘制轨迹点的数据包,其中,所述本次需要绘制轨迹点的数据包包括本次的经纬度坐标gpsc(x,y)以及本次时间rtc,所述上次绘制轨迹点的数据包包括上次的经纬度坐标gpsl(x,y)以及上次时间rtl;

本步骤中,所述上次需要绘制轨迹点的数据是从上一次绘制轨迹完成后保存的值中获取得到。所述本次需要绘制轨迹点的数据包通过以下子步骤获取:

s1011、开始从网络请求数据;本步骤可以是任何具有地图软件的电子设备通过wifi、2g、3g、4g、5g等等无线网络向gps定位系统请求需要绘制本次轨迹点数据包需求的请求数据。

s1022、记录当前请求时间rtc(即所述本次时间rtc);

s1033、网络请求返回本次需要绘制的轨迹点数据包,所述包括本次的经纬度坐标gpsc(x,y)。

s102、根据本次时间rtc和上次时间rtl得到时间间隔n;

s103、判断所述时间间隔n是否大于或等于预设的绘制轨迹时长的默认值tr;

s104、若所述时间间隔n大于预设的绘制轨迹时长的默认值tr,则视为上一次绘制轨迹动画被延迟执行,选择预设的小于所述默认值tr的较小值mint,以使得本次绘制轨迹的时长tr等于所述预设的较小值mint;

s105、若所述时间间隔n小于或等于预设的绘制轨迹时长的默认值tr,则所述本次的绘制轨迹的时长tr等于所述预设的绘制轨迹时长的默认值tr;

s106、根据所述本次绘制轨迹的时长tr、本次的经纬度坐标gpsc(x,y)、上次的经纬度坐标gpsl(x,y)绘制轨迹动画;

作为优选的或可选的,本步骤包括以下子步骤:

s1061、在本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间预设m个插值点,所述m个插值点将所述本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)等分成m+1个段;

s1062、获取本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)的方位角θ;作为优选的或可选的,所述方位角θ通过以下公式获得:

θ=arccos(cos(90-gpscw)×cos(90-gpslw)+sin(90-gpscw)×sin(90-gpslw)×cos(gpscj-gpslj))(一)

式(一)中,gpscw表示本次的经纬度坐标的纬度,gpslw表示上次的经纬度坐标的纬度,gpscj表示本次的经纬度坐标的经度,gpslj表示上次的经纬度坐标的经度。

s1063、根据方位角θ、本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)得到该两经纬度坐标点之间的距离d;作为优选的或可选的,通过以下公式得到所述距离d:

l=r*(θ÷180*π)(二)

式(二)中,r为地球的半径,π为圆周率。

s1064、根据所述方位角θ、所述距离d以及上次的经纬度坐标gpsl(x,y)分别得到预设于本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间的m个插值点的经纬度坐标gps(x0,y0)、gps(x1,y1)、……、gps(xm,ym);作为优选的或可选的,通过以下公式得到每一个插值点的经纬度坐标:

θn=θ÷(m+1)(三)

式(三)中,θn为第n个插值点与上次的经纬度坐标gpsl(x,y)的方位角,其中,n小于等于m;

a=arccos(cos(90-gpslw)×cos(θ)+sin(90-gpslw)×sin(θ)×cos(θn))(四)

式(四)中,a为第n个插值点的纬度变量值,相对于90度;

c=arcsin(sin(θ)×sin(θn)÷sin(a))(五)

式(五)中,c为第n个插值点的经度变量值,相对于上次的经纬度坐标的经度gpslj。

xnj=gpslj+c(六)

式(六)中,所述xnj为第n个插值点的经度;

xnw=90-a(七)

式(七)中,所述xnw为n个插值点的纬度。

s1065、根据所述上次的经纬度坐标gpsl(x,y)、m个插值点以及本次的上次的经纬度坐标gpsc(x,y)(x,y)得到每相邻两个插值点的绘制轨迹的时长为tr’=tr/(m+1);

s1066、根据所述每相邻两个点的绘制轨迹的时长tr’,依次绘制上次的经纬度坐标gpsl(x,y)到插值点gps(x0,y0)的轨迹、插值点gps(x0,y0)到插值点gps(x1,y1)的轨迹、……、插值点gps(xm,ym)到本次的经纬度坐标gpsc(x,y)的轨迹。

s107、待本次绘制完成后,保存本次绘制轨迹的值,以使得gpsl(x,y)=gpsc(x,y),rtl=rtc。

本方案中,每隔一预定间就向网络请求数据。即,本方案还包括:

s108、等待预定时间tr后,再次执行s101步骤,直至本次导航的轨迹绘制完成。

本发明实施方式,在请求时记录本次的请求时间,本将请求时间与存储的上次的请求时间求得时间差,根据时间差与默认值进行比对以判断上次绘制轨迹动画被延迟执行,从而来调整绘制时长,减少而各种配置的设备的延时问题,极大地降低了地图软件中轨迹动画“卡顿”现象。进一步的,通过上述方法绘制轨迹动画,在每一条轨迹中插入若干个插值点,将每一条轨迹细分为若干个段进行绘制,使得轨迹动画更流畅的展示于用户面前,提高用户的体验感、满意度。

请参见图3,图3为本发明地图实时轨迹的绘制动画实现装置一实施例的方框图。本实施例的地图实时轨迹的绘制动画实现装置包括:

第一获取模块101,用于本次需要绘制轨迹点的数据包以及上次绘制轨迹点的数据包,其中,所述本次需要绘制轨迹点的数据包包括本次的经纬度坐标gpsc(x,y)以及本次时间rtc,所述上次绘制轨迹点的数据包包括上次的经纬度坐标gpsl(x,y)以及上次时间rtl。

时间间隔计算模块102,用于根据本次时间rtc和上次时间rtl得到时间间隔n。

判断模块103,用于判断所述时间间隔n是否大于或等于预设的绘制轨迹时长的默认值tr。

绘制轨迹时长确定模块104,用于当所述判断模块103判断得到所述时间间隔n大于预设的绘制轨迹时长的默认值tr,则视为上一次绘制动画被延迟执行,选择预设的较小值mint,以使得本次绘制轨迹的时长tr等于所述预设的较小值mint;还用于当所述判断模块103判断得到所述时间间隔n小于或等于预设的绘制轨迹时长的默认值tr,则所述本次的绘制轨迹的时长tr等于所述预设的绘制轨迹时长的默认值tr。

轨迹动画绘制模块105,用于根据所述本次绘制轨迹的时长tr、本次的经纬度坐标gpsc(x,y)、上次的经纬度坐标gpsl(x,y)绘制轨迹动画。

其中,所述轨迹动画绘制模块105包括插值点预设模块1051、第二获取模块1052、第三获取模块1053、插值点经纬坐标获取模块1054、相邻两插值点绘制轨迹的时长获取模块1055以及轨迹动画绘制子模块1056。

所述插值点预设模块1051用于在本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间预设m个插值点,所述m个插值点将所述本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)等分成m+1个段;

所述第二获取模块1052,用于获取本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)的方位角θ;其中,所述第二获取模块1052还用于通过以下公式获取所述方位角θ:

θ=arccos(cos(90-gpscw)×cos(90-gpslw)+sin(90-gpscw)×sin(90-gpslw)×cos(gpscj-gpslj)),其中,gpscw表示本次的经纬度坐标的纬度,gpslw表示上次的经纬度坐标的纬度,gpscj表示本次的经纬度坐标的经度,gpslj表示上次的经纬度坐标的经度。

第三获取模块1053,用于根据方位角θ、本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)得到该两经纬度坐标点之间的距离d;所述第三获取模块1053还用于通过以下公式得到所述距离d:

l=r*(θ÷180*π),其中,r为地球的半径,π为圆周率。

所述插值点经纬坐标获取模块1054,用于根据所述方位角θ、所述距离d以及上次的经纬度坐标gpsl(x,y)分别得到预设于本次的经纬度坐标gpsc(x,y)和上次的经纬度坐标gpsl(x,y)之间的m个插值点的经纬度坐标gps(x0,y0)、gps(x1,y1)、……、gps(xm,ym)。

所述插值点经纬坐标获取模块1054还用于通过以下公式得到每一个插值点的经纬度坐标:

θn=θ÷(m+1),其中,θn为第n个插值点与上次的经纬度坐标gpsl(x,y)的方位角,其中,n小于等于m;

a=arccos(cos(90-gpslw)×cos(θ)+sin(90-gpslw)×sin(θ)×cos(θn)),其中,a为第n个插值点的纬度变量值,相对于90度;

c=arcsin(sin(θ)×sin(θn)÷sin(a)),其中,c为第n个插值点的经度变量值,相对于上次的经纬度坐标的经度gpslj。

xnj=gpslj+c,其中,所述xnj为第n个插值点的经度;

xnw=90-a,其中,所述xnw为n个插值点的纬度。

所述相邻两插值点绘制轨迹的时长获取模块1055用于根据所述上次的经纬度坐标gpsl(x,y)、m个插值点以及本次的上次的经纬度坐标gpsc(x,y)(x,y)得到每相邻两个插值点的绘制轨迹的时长为tr’=tr/(m+1);

所述轨迹动画绘制子模块1056用于根据所述每相邻两个点的绘制轨迹的时长tr’,依次绘制上次的经纬度坐标gpsl(x,y)到插值点gps(x0,y0)的轨迹、插值点gps(x0,y0)到插值点gps(x1,y1)的轨迹、……、插值点gps(xm,ym)到本次的经纬度坐标gpsc(x,y)的轨迹。

以及保存模块106,用于待本次绘制完成后,保存本次请求的值,以使得gpsl(x,y)=gpsc(x,y),pl=pc,rtl=rtc。

以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1