地图显示方法及其装置与流程

文档序号:13804815阅读:143来源:国知局
地图显示方法及其装置与流程

本发明涉及电子地图领域,尤其涉及一种地图显示方法及其装置。



背景技术:

目前,电子地图给人们的生活带来的很多便利,如用户想要搜索某个商店的位置,用户可在浏览器中输入商店名称,点击搜索后,浏览器将商店的位置在地图上显示出来。浏览器在显示地图时,通常是向服务器发送请求,服务器根据请求实时计算要显示的地图层级的数据,然后将数据发送给浏览器,浏览器根据获得的数据进行显示。

现有技术中,浏览器需要实时与服务器进行交互,不仅增加了浏览器与服务器之间的交互压力,而且往往会存在一定的延时,影响地图的显示,造成卡顿现象。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的第一个目的在于提出一种地图显示方法,根据从服务器获取的原始节点的三维数据在浏览器端形成聚类树,在确定需要展示的地图层级后,从聚类树中确定需要渲染的目标节点,提取目标节点之间的层级关系以及映射关系,对目标节点进行渲染展示,实现了就近计算,减少了浏览器与服务器之间的交互,降低了出现卡顿现象的概率。

本发明的第二个目的在于提出一种地图显示装置。

本发明的第三个目的在于提出一种计算机设备。

本发明的第四个目的在于提出一种计算机程序产品。

本发明的第五个目的在于提出一种非临时性计算机可读存储介质。

为达上述目的,本发明第一方面实施例提出了一种地图显示方法,包括:

从服务器获取原始节点的三维坐标,并对所述三维坐标进行转换,得到所述原始节点的二维坐标;

根据所述原始节点的二维坐标,形成地图每个层级的聚集节点,并利用所有的聚集节点和原始节点形成一个聚类树;其中,所述聚类树中携带节点之间的层级关系,以及节点之间的映射关系;

确定需要展示的地图的当前层级,并从所述聚类树中确定所述当前层级对应的需要渲染的目标节点;其中,所述目标节点包括当前层级以及位于当前层级下每个层级的聚集节点和/或原始节点;

根据与所述当前层级对应的展示范围,从所述聚类树中提取所述目标节点之间的层级关系以及映射关系,对所述目标节点进行渲染并在显示屏幕上展示。

作为本发明第一方面实施例一种可选的实现方式,所述根据所述原始节点的二维坐标,形成地图每个层级的聚集节点,包括:

针对每个原始节点,从所述地图的最大层级开始遍历,根据所述原始节点的二维坐标,在当前层级中查询是否存在与所述原始节点距离相近的聚集节点;

如果当前层级中存在与所述原始节点距离相近的所述聚集节点,则停止遍历,并将所述原始节点作为所述聚集节点的子节点加入到距离相近的聚集节点中;

如果当前层级中未存在与所述原始节点距离相近的聚集节点,则根据所述原始节点的二维坐标,在当前层级中查询是否存在与所述原始节点距离相近的未聚类的原始节点;

如果当前层级中存在与所述原始节点距离相近的未聚类的原始节点,则停止遍历,并利用所述原始节点与所述未聚类的原始节点形成一个聚集节点,并将形成的所述聚集节点添加到当前层级的聚集节点对应的列表中,以及位于当前层级之上的其他层级的聚集节点对应的列表中;

如果当前层级未存在与所述原始节点距离相近的未聚类的原始节点,则继续遍历,如果遍历完所有层级后仍然未查找到与所述原始节点距离相近的聚集节点,则将所述原始节点缓存到最小层级对应的未聚类的原始节点对应的列表中。

作为本发明第一方面实施例一种可选的实现方式,所述根据所述原始节点的二维坐标,在当前层级中查询是否存在与所述原始节点距离相近的聚集节点,包括:

对所述原始节点的二维坐标进行转换,得到所述原始节点的像素坐标;

将所述原始节点的像素坐标与当前层级的聚集半径取模,得到第一模值和第二模值,形成第一坐标;

从所述当前层级的聚集节点的列表中查询,每个聚集节点的模值坐标是否与所述第一坐标一致;

如果所述聚集节点的模值坐标与所述第一坐标一致,则确定存在与所述原始节点距离相近的聚集节点;

所述将所述原始节点作为所述聚集节点的子节点加入到所述距离相近的聚集节点中,包括:

获取距离相近的聚集节点下每个子节点的像素坐标;

计算所述每个子节点的像素坐标与所述原始节点的像素坐标之间的距离,如果所述距离未超出预设的阈值,则将所述原始节点作为子节点加入到距离相近的聚集节点中。

作为本发明第一方面实施例一种可选的实现方式,所述将所述原始节点作为子节点加入到距离相近的聚集节点中之后,还包括:

利用所述原始节点的像素坐标对距离相近的聚集节点的中心点坐标进行更新;

计算更新后的距离相近的聚集节点的中心点坐标与所述聚集半径之间的模值,对距离相近的聚集节点的模值坐标进行更新。

作为本发明第一方面实施例一种可选的实现方式,所述方法,还包括:

统计每个层级的聚集节点的当前子节点的个数,其中,所述子节点包括隶属所述聚集节点的原始节点和/或处于所述聚集节点下一层级的聚集节点。

作为本发明第一方面实施例一种可选的实现方式,所述方法,还包括:

针对每个聚集节点,识别所述聚集节点的边界子节点;

基于所述边界子节点为所述聚集节点确定边界范围。

作为本发明第一方面实施例一种可选的实现方式,所述对所述目标节点进行渲染并在显示屏幕上展示之后,还包括:

监控用户对地图的操作指令;

根据所述操作指令确定所述地图的目标层级;

确定所述目标层级的目标节点以及展示范围,并将所述地图从所述当前层级切换到所述目标层级进行展示。

作为本发明第一方面实施例一种可选的实现方式,所述确定需要展示的地图的当前层级,包括:

查询浏览器的ip地址对应的地域信息,根据所述地域信息确定所述当前层级。

本发明实施例的地图显示方法,通过从服务器获取原始节点的三维坐标,并对三维坐标进行转换,得到原始节点的二维坐标,根据原始节点的二维坐标,形成地图每个层级的聚集节点,并利用所有的聚集节点和原始节点形成一个聚类树,在确定需要展示的地图的当前层级后,从聚类树中确定当前层级对应的需要渲染的目标节点,之后根据与当前层级对应的展示范围,从聚类树中提取目标节点之间的层级关系以及映射关系,对目标节点进行渲染显示。本实施例中,在浏览器端形成聚类树,在确定需要展示的地图层级后,从聚类树中确定地图层级对应的需要渲染的目标节点,由于聚类树携带节点之间的层级关系,以及节点之间的映射关系,因此可从聚类树中提取出目标节点之间的层级关系及映射关系,并对目标节点进行渲染展示,相比浏览器通过与服务器进行实时交互展示地图的方法,减少了网络请求,直接由浏览器进行就近计算,更快、更灵活,同时也减少了服务器的压力,节约了服务器资源。

为达上述目的,本发明第二方面实施例提出了一种地图显示装置,包括:

转换模块,用于从服务器获取原始节点的三维坐标,并对所述三维坐标进行转换,得到所述原始节点的二维坐标;

形成模块,用于根据所述原始节点的二维坐标,形成地图每个层级的聚集节点,并利用所有的聚集节点和原始节点形成一个聚类树;其中,所述聚类树中携带节点之间的层级关系,以及节点之间的映射关系;

确定模块,用于确定需要展示的地图的当前层级,并从所述聚类树中确定所述当前层级对应的需要渲染的目标节点;其中,所述目标节点包括当前层级以及位于当前层级下每个层级的聚集节点和/或原始节点;

展示模块,用于根据与所述当前层级对应的展示范围,从所述聚类树中提取所述目标节点之间的层级关系以及映射关系,对所述目标节点进行渲染并在显示屏幕上展示。

作为本发明第二方面实施例一种可选的实现方式,形成模块,包括:

查询单元,用于针对每个原始节点,从所述地图的最大层级开始遍历,根据所述原始节点的二维坐标,在当前层级中查询是否存在与所述原始节点距离相近的聚集节点;

加入单元,用于当当前层级中存在与所述原始节点距离相近的所述聚集节点时,则停止遍历,并将所述原始节点作为所述聚集节点的子节点加入到距离相近的聚集节点中;

所述查询单元,还用于当当前层级中未存在与所述原始节点距离相近的聚集节点时,根据所述原始节点的二维坐标,在当前层级中查询是否存在与所述原始节点距离相近的未聚类的原始节点;

添加单元,用于当当前层级中存在与所述原始节点距离相近的未聚类的原始节点时,停止遍历,并利用所述原始节点与所述未聚类的原始节点形成一个聚集节点,并将形成的所述聚集节点添加到当前层级的聚集节点对应的列表中,以及位于当前层级之上的其他层级的聚集节点对应的列表中;

缓存单元,用于当当前层级未存在与所述原始节点距离相近的未聚类的原始节点时,继续遍历,当遍历完所有层级后仍然未查找到与所述原始节点距离相近的聚集节点,将所述原始节点缓存到最小层级对应的未聚类的原始节点对应的列表中。

作为本发明第二方面实施例一种可选的实现方式,所述查询单元,还用于:

对所述原始节点的二维坐标进行转换,得到所述原始节点的像素坐标;

将所述原始节点的像素坐标与当前层级的聚集半径取模,得到第一模值和第二模值,形成第一坐标;

从所述当前层级的聚集节点的列表中查询,每个聚集节点的模值坐标是否与所述第一坐标一致;

如果所述聚集节点的模值坐标与所述第一坐标一致,则确定存在与所述原始节点距离相近的聚集节点;

加入单元,还用于:

获取距离相近的聚集节点下每个子节点的像素坐标;

计算所述每个子节点的像素坐标与所述原始节点的像素坐标之间的距离,如果所述距离未超出预设的阈值,则将所述原始节点作为子节点加入到距离相近的聚集节点中。

作为本发明第二方面实施例一种可选的实现方式,形成模块,还包括:

更新单元,用于利用所述原始节点的像素坐标对距离相近的聚集节点的中心点坐标进行更新;计算更新后的距离相近的聚集节点的中心点坐标与所述聚集半径之间的模值,对距离相近的聚集节点的模值坐标进行更新。

作为本发明第二方面实施例一种可选的实现方式,地图显示装置,还包括:

统计模块,用于统计每个层级的聚集节点的当前子节点的个数,其中,所述子节点包括隶属所述聚集节点的原始节点和/或处于所述聚集节点下一层级的聚集节点。

作为本发明第二方面实施例一种可选的实现方式,地图显示装置,还包括:

识别确定模块,用于针对每个聚集节点,识别所述聚集节点的边界子节点;基于所述边界子节点为所述聚集节点确定边界范围。

作为本发明第二方面实施例一种可选的实现方式,地图显示装置,还包括:

监控模块,用于监控用户对地图的操作指令;

确定模块,还用于根据所述操作指令确定所述地图的目标层级;

切换模块,用于确定所述目标层级的目标节点以及展示范围,并将所述地图从所述当前层级切换到所述目标层级进行展示。

本发明实施例的地图显示装置,通过从服务器获取原始节点的三维坐标,并对三维坐标进行转换,得到原始节点的二维坐标,根据原始节点的二维坐标,形成地图每个层级的聚集节点,并利用所有的聚集节点和原始节点形成一个聚类树,在确定需要展示的地图的当前层级后,从聚类树中确定当前层级对应的需要渲染的目标节点,之后根据与当前层级对应的展示范围,从聚类树中提取目标节点之间的层级关系以及映射关系,对目标节点进行渲染显示。本实施例中,在浏览器端形成聚类树,在确定需要展示的地图层级后,从聚类树中确定地图层级对应的需要渲染的目标节点,由于聚类树携带节点之间的层级关系,以及节点之间的映射关系,因此可从聚类树中提取出目标节点之间的层级关系及映射关系,并对目标节点进行渲染展示,相比浏览器通过与服务器进行实时交互展示地图的方法,减少了网络请求,直接由浏览器进行就近计算,更快、更灵活,同时也减少了服务器的压力,节约了服务器资源。

为达上述目的,本发明第三方面实施例提出了一种计算机设备,包括:处理器和存储器;其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如第一方面实施例所述的地图显示方法。

为达上述目的,本发明第四方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,以用于实现如第一方面实施例所述的地图显示方法。

为达上述目的,本发明第五方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面实施例所述的地图显示方法。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例提供的一种地图显示方法的流程示意图;

图2为本发明实施例提供的一种聚类树的示意图;

图3为本发明实施例提供的一种根据原始节点的二维坐标形成地图每个层级的聚集节点的方法的流程示意图;

图4为本发明实施例提供的另一种地图显示方法的流程示意图;

图5为本发明实施例提供的一种地图显示装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的地图显示方法及其装置。

图1为本发明实施例提供的一种地图显示方法的流程示意图。

如图1所示,该地图显示方法包括以下步骤:

步骤101、从服务器获取原始节点的三维坐标,并对三维坐标进行转换,得到原始节点的二维坐标。

本实施例中,浏览器向服务器发送请求,以从服务器获取所有原始节点的三维坐标。在浏览器获得原始节点的三维坐标后,针对每个原始节点,将原始节点的三维坐标进行坐标转换,得到二维坐标。从而,将三维计算问题转换为平面几何计算问题,降低了后续计算的复杂度。

作为一个示例,可通过服务器接口地址,利用javascript的axjx技术获取json结构的原始节点的三维数据,并利用proj.4将原始节点的三维坐标进行投影转换,得到二维坐标。需要说明的是,proj.4是用c语言实现的,需要实现一个用javascript语言的版本,以实现在浏览器环境中运行。

为了提高后续计算结果的准确度,在坐标转换之前,可先剔除数据不符合要求的原始节点,如剔除三维数据格式顺序存在错误的原始节点,以避免影响二维坐标的准确性。

步骤102,根据原始节点的二维坐标,形成地图每个层级的聚集节点,并利用所有的聚集节点和原始节点形成一个聚类树;其中,聚类树中携带节点之间的层级关系,以及节点之间的映射关系。

本实施例中,地图可包括多个层级,每个层级的分辨率不同。例如,层级越大,分辨率越大,显示出的地理位置精确度越高。由于原始节点的二维坐标可表示出原始节点的具体位置,针对每个原始节点,可根据原始节点的二维坐标,形成地图每个层级的聚集节点。也就是说,根据原始节点的二维坐标,将原始节点分到不同的层级。

从而,利用所有的聚集节点和原始节点可形成一个聚类树。其中,聚类树中包括节点之间的层级关系,以及节点之间的映射关系。例如,图2所示的聚类树包括多个层级,聚类树的层级代表地图的层级,也就是说,聚类树的层级与地图的层级相对应,如聚类树的第4层级对应地图的第4层级。并且,聚类树的底层到顶层,分辨率越来越低,层级越来越小,那么聚类树的最底层对应地图的最大层级。

步骤103,确定需要展示的地图的当前层级,并从聚类树中确定当前层级对应的需要渲染的目标节点。

作为一种可能的实现形式,当用户输入要搜索的地名之后,可从服务器获取地名的三维坐标,并将三维坐标转化为二维坐标,根据地名的二维坐标找到与该二维坐标距离最小的聚集节点所在的地图层级,将该地图层级作为需要展示的地图的当前层级。

作为另一种可能的实现形式,可查询浏览器的ip地址对应的地域信息,根据地域信息确定当前层级。例如,若浏览器的ip地址对应的地域信息为北京市海淀区,则根据地域信息可确定需要展示的地图的层级为海淀区对应的地图的层级。

在确定需要展示的地图的当前层级后,从聚类树中确定当前层级对应的需要渲染的目标节点。由于在展示当前层级时,需要用到当前层级下每个层级的数据,才能实现当前层级的展示。也就是说,在地图展示时,虽然用户看到的是当前层级的地图,但是需要当前层级下每个层级的节点来支撑,因此需要渲染的目标节点不仅包括当前层级的聚集节点和/或目标节点,还包括当前层级下每个层级的聚集节点和/或原始节点。

步骤104,根据与当前层级对应的展示范围,从聚类树中提取目标节点之间的层级关系以及映射关系,对目标节点进行渲染并在显示屏幕上展示。

本实施例中,地图的每个层级对应不同的展示范围,在确定需要展示的地图的当前层级后,可以确定当前层级对应的展示范围。然后,根据当前层级对应的展示范围,从聚类树中提取目标节点之间的层级关系以及映射关系。最后,对目标节点进行渲染并在显示屏上展示。

本实施例中,在浏览器端形成聚类树,根据聚类树对需要显示的地图的当前层级进行显示,相比浏览器通过与服务器进行实时交互展示地图的方法,减少了网络请求,直接由浏览器进行就近计算,更快、更灵活。

下面结合图3介绍步骤102中,根据原始节点的二维坐标,形成地图每个层级的聚集节点的一种可能的实现形式。

如图3所示,根据原始节点的二维坐标形成地图每个层级的聚集节点的方法包括以下步骤:

步骤301,针对每个原始节点,从地图的最大层级开始遍历,根据原始节点的二维坐标,在当前层级中查询是否存在与原始节点距离相近的聚集节点。

本实施例中,从地图的最大层级开始遍历,也就是从地图最底层的层级开始遍历。

根据原始节点的二维坐标,在当前层级中查询是否存在与原始节点距离相近的聚集节点。具体地,对原始节点的二维坐标进行转换,得到原始节点的像素坐标,转换方法如公式(1)所示。

其中,(x,y)为原始节点的平面坐标,(xpixel,ypixel)原始节点的像素坐标,zoom表示当前遍历的地图的层级,zoommax表示地图的最大层级。

然后,将原始节点的像素坐标与当前层级的聚集半径取模,得到第一模值和第二模值。其中,聚集半径是一个设定的数值,用于表示聚集范围。例如,原始节点的像素坐标为(xpixel,ypixel),则xpixel与当前层级的聚集半径取模得到第一模值,ypixel与当前层级的聚集半径取模得到第二模值。

在获得第一坐标后,从当前层级的聚集节点的列表中查询,每个聚集节点的模值坐标是否与第一坐标一致。其中,聚集节点的模值坐标是将聚集节点的中心坐标与当前层级的聚集半径取模得到的。

如果某聚集节点的模值坐标与第一坐标一致,则确定原始节点与该聚集节点距离相近,也就是说,当前层级中存在与原始节点距离相近的聚集节点。如果当前层级中所有聚集节点的模值坐标均与第一坐标不一致,可以确定当前层级中不存在与原始节点距离相近的聚集节点。

本实施例中,通过比较第一坐标与聚集节点的模值坐标,查询当前层级中是否存在与原始节点距离相近的聚集节点,使查询结果更加准备可靠。

步骤302,如果当前层级中存在与原始节点距离相近的聚集节点,则停止遍历,并将原始节点作为聚集节点的子节点加入到距离相近的聚集节点中。

如果当前层级中存在与原始节点距离相近的聚集节点,则停止遍历,不需要在地图的其他层级中查询,只需要将原始节点作为聚集节点的子节点加入到距离相近的聚集节点中。

本实施例中,聚集节点的子节点包括隶属聚集节点的原始节点和/或处于聚集节点下一层级的聚集节点。

进一步地,为了提高聚集的准确度,在将原始节点作为聚集节点的子节点加入距离相近的聚集节点时,获取距离相近的聚集节点下每个子节点的像素坐标,并根据两点之间的距离公式,计算每个子节点的像素坐标与原始节点的像素坐标之间的距离。如果每个子节点的像素坐标与原始节点的像素坐标之间距离均未超出预设的阈值,则将原始节点作为子节点加入到距离相近的聚集节点中,具体地,将原始节点添加到所述距离相近的聚集节点对应的列表中,使原始节点隶属于距离相近的聚集节点。否则,不将原始节点加入距离相近的聚集节点中。

步骤303,如果当前层级中未存在与原始节点距离相近的聚集节点,则根据原始节点的二维坐标,在当前层级中查询是否存在与原始节点距离相近的未聚类的原始节点。

如果当前层级中不存在与原始节点距离相近的聚集节点,则根据原始节点的二维坐标,在当前层级中查询是否存在与原始节点距离相近的未聚类的原始节点,其中,未聚类的原始节点隶属于当前层级的聚集节点。如图2所示,黑色小圆圈表示隶属于距离相近的聚集节点的未聚类的原始节点。

具体的查询过程与上述实施例中,在当前层级中查询是否存在与原始节点距离相近的聚集节点类似,故在此不再赘述。

步骤304,如果当前层级中存在与原始节点距离相近的未聚类的原始节点,则停止遍历,并利用原始节点与所述未聚类的原始节点形成一个聚集节点。

如果第一坐标与当前层级中某个未聚类的原始节点的模值坐标一致,则当前层级中存在与原始节点距离相近的未聚类的原始节点,那么停止遍历,并将原始节点与未聚类的原始节点形成一个聚集节点。

由于当前层级的聚集节点的子节点包括隶属于聚集节点的原始节点以及处于聚集节点下一层级的聚集节点,也就是说,在当前层级中增加新聚集节点时,会影响当前层级的上一层级中的聚集节点。因此在将形成的聚集节点添加到当前层级的聚集节点对应的列表中,使形成的聚集节点成为当前层级中新增的聚集节点时,还需要将形成的聚集节点添加到当前层级之上的其他层级的聚集节点对应的列表中。可见,聚集节点对应的列表不仅包括当前层级中的聚集节点,还包括聚集节点与下面层级子节点之间的对应关系。

例如,若原始节点与第3层级中聚类节点的某非聚类的原始节点形成一个聚集节点,则将聚集节点添加到第3层级的聚集节点对应的列表中,使形成的聚集节点成为第3层级中新增的聚集节点,还需要将形成的聚集节点添加到第2层级的聚集节点对应的列表中,使形成的聚集节点作为第2层级的聚集节点的子节点。从而,保证了在某个层级的聚集节点增加时,相关层级节点之间的关系进行相应的变化。

步骤305,如果当前层级未存在与原始节点距离相近的未聚类的原始节点,则继续遍历,如果遍历完所有层级后仍然未查找到与原始节点距离相近的聚集节点,则将原始节点缓存到最小层级对应的未聚类的原始节点对应的列表中。

如果原始节点的第一坐标与当前层级中所有的非聚类的原始节点的模值坐标均不一致,则当前层级未存在与原始节点距离相近的未聚类的原始节点,那么继续遍历当前层级的上一层级。如果遍历完所有的层级后仍然未查找到与原始节点距离相近的聚集节点,则将原始节点缓存到最小层级对应的未聚类的原始节点对应的列表中。

本实施例中,通过从地图的最大层级开始遍历,形成地图每个层级的聚类节点,从而可以形成聚类树。在形成聚类树后,可统计每个层级的聚集节点的当前子节点的个数,当然也可在遍历完当前层级后,统计当前层级的聚集节点的当前子节点的个数。

进一步地,为了保证边界误差,可针对每个聚集节点,识别聚集节点的边界子节点,然后基于边界子节点为聚集节点确定边界范围。

作为一个示例,从隶属于聚集节点的子节点中,根据每个子节点的像素坐标,可以确定出位于上下左右四个角的子节点,然后根据该子节点的像素坐标,计算出聚集节点的边界范围。

作为一个示例,可根据聚集节点的模值找到处于聚集节点附近的上下左右四个点。本实施例中,上下左右四个点的像素坐标与聚集半径做模值,该模值与聚集节点的模值的差值在一定范围内,然后再基于这个四个点的模值,找到四个点附近的点,直到无法找到四个点附近的点为止,然后并基于最后找到的四个点作为聚集节点的边界子节点,然后根据边界子节点的像素坐标确定聚集节点的边界范围。

作为一种示例,在确定了聚集节点之后,可以提取出隶属于该聚集节点的原始节点,然后遍历出最大节点和最小节点,根据最大节点和最小节点的坐标,可以计算出聚集节点的边界范围。

在确定聚集节点的边界范围之后,可将边界范围添加到聚集节点的bounds属性中,在后续使用聚集节点的边界范围时,直接从bounds属性中读取聚集节点的边界范围。

进一步地,为了保证聚集节点的中心点坐标与模值坐标的准确性,在步骤302之后,还可包括:

利用原始节点的像素坐标对距离相近的聚集节点的中心点坐标进行更新,以及计算更新后的距离相近的聚集节点的中心点坐标与聚集半径之间的模值,对距离相近的聚集节点的模值坐标进行更新。

实际中,用户对地图的操作还包括缩放地图等操作,下面通过另一个实施例,来描述本发明实施例提出的地图显示方法。

如图4所示,在图1的基础上,该地图显示方法包括以下步骤:

步骤401,从服务器获取原始节点的三维坐标,并对三维坐标进行转换,得到原始节点的二维坐标。

步骤402,根据原始节点的二维坐标,形成地图每个层级的聚集节点,并利用所有的聚集节点和原始节点形成一个聚类树;其中,聚类树中携带节点之间的层级关系,以及节点之间的映射关系。

步骤403,确定需要展示的地图的当前层级,并从聚类树中确定当前层级对应的需要渲染的目标节点。

步骤404,根据与当前层级对应的展示范围,从聚类树中提取目标节点之间的层级关系以及映射关系,对目标节点进行渲染并在显示屏幕上展示。

本实施例中,步骤401-404与上述实施例中的步骤104-104类似,故在此不再展开叙述。

步骤405,监控用户对地图的操作指令。

对目标节点进行渲染并在显示屏上展示之后,用户可能会地图进行放大、缩小等操作,因此实时监控用户对地图的操作指令。具体地,当用户双击屏幕,或者点击地图上的放大或者缩小图标,或者滚动鼠标进行缩放操作时,浏览器可监控到用户对地图的操作指令。

步骤406,根据操作指令确定地图的目标层级。

例如,当监控到滚动鼠标放大地图的操作指令时,确定放大倍数,并根据放大倍数和操作前地图所处的层级,确定操作后地图的目标层级。当监控到双击屏幕的操作指令时,可根据双击一次屏幕对应的放大倍数以及地图所处的当前层级,确定双击后地图的目标层级。

步骤407,确定目标层级的目标节点以及展示范围,并将地图从当前层级切换到目标层级进行展示。

在确定目标层级后,可从聚类树中确定目标层级对应需要渲染的目标节点。其中,目标节点包括目标层级以及目标层级以下每个层级的聚集节点和原始节点。

然后,根据与目标层级对应的展示范围,从聚类树中提取目标节点之间的层级关系以及映射关系。之后,对目标节点进行渲染,将地图从当前层级切换到目标层级进行展示。

本实施例中,当用户对地图进行缩放操作时,地图的层级和展示范围会发生变化,根据地图的目标层级以及展示范围,从聚类树中提取目标节点以及目标之间的层级关系和映射关系,对目标节点进行渲染展示切换后的地图的目标层级,相比通过浏览器与服务器进行实时交互,对操作后的地图进行展示的方法,延时小、更加方便。

为了实现上述实施例,本发明还提出一种地图显示装置。

如图5所示,该地图显示装置包括:转换模块510、形成模块520、确定模块530、展示模块540。

转换模块510用于从服务器获取原始节点的三维坐标,并对三维坐标进行转换,得到原始节点的二维坐标。

形成模块520用于根据原始节点的二维坐标,形成地图每个层级的聚集节点,并利用所有的聚集节点和原始节点形成一个聚类树;其中,聚类树中携带节点之间的层级关系,以及节点之间的映射关系。

确定模块530用于确定需要展示的地图的当前层级,并从聚类树中确定当前层级对应的需要渲染的目标节点;其中,目标节点包括当前层级以及位于当前层级下每个层级的聚集节点和/或原始节点。

展示模块540用于根据与当前层级对应的展示范围,从聚类树中提取目标节点之间的层级关系以及映射关系,对目标节点进行渲染并在显示屏幕上展示。

作为本实施例一种可能的实现形式,形成模块520,包括:

查询单元,用于针对每个原始节点,从所地图的最大层级开始遍历,根据原始节点的二维坐标,在当前层级中查询是否存在与原始节点距离相近的聚集节点;

加入单元,用于当当前层级中存在与原始节点距离相近的聚集节点时,则停止遍历,并将原始节点作为聚集节点的子节点加入到距离相近的聚集节点中;

查询单元,还用于当当前层级中未存在与原始节点距离相近的聚集节点时,根据原始节点的二维坐标,在当前层级中查询是否存在与原始节点距离相近的未聚类的原始节点;

添加单元,用于当当前层级中存在与原始节点距离相近的未聚类的原始节点时,停止遍历,并利用原始节点与未聚类的原始节点形成一个聚集节点,并将形成的聚集节点添加到当前层级的聚集节点对应的列表中,以及位于当前层级之上的其他层级的聚集节点对应的列表中;

缓存单元,用于当当前层级未存在与原始节点距离相近的未聚类的原始节点时,继续遍历,当遍历完所有层级后仍然未查找到与原始节点距离相近的聚集节点,将原始节点缓存到最小层级对应的未聚类的原始节点对应的列表中。

作为本实施例一种可能的实现方式,查询单元,还用于:

对原始节点的二维坐标进行转换,得到原始节点的像素坐标;

将原始节点的像素坐标与当前层级的聚集半径取模,得到第一模值和第二模值,形成第一坐标;

从当前层级的聚集节点的列表中查询,每个聚集节点的模值坐标是否与第一坐标一致;

如果聚集节点的模值坐标与第一坐标一致,则确定存在与原始节点距离相近的聚集节点;

加入单元,还用于:

获取距离相近的聚集节点下每个子节点的像素坐标;

计算每个子节点的像素坐标与原始节点的像素坐标之间的距离,如果距离未超出预设的阈值,则将原始节点作为子节点加入到距离相近的聚集节点中。

作为本实施例一种可能的实现方式,形成模块520,还包括:

更新单元,用于利用原始节点的像素坐标对距离相近的聚集节点的中心点坐标进行更新;计算更新后的距离相近的聚集节点的中心点坐标与聚集半径之间的模值,对距离相近的聚集节点的模值坐标进行更新。

作为本实施例一种可能的实现方式,地图显示装置,还包括:

统计模块,用于统计每个层级的聚集节点的当前子节点的个数,其中,子节点包括隶属聚集节点的原始节点和/或处于聚集节点下一层级的聚集节点。

作为本实施例一种可能的实现方式,地图显示装置,还包括:识别确定模块,用于针对每个聚集节点,识别聚集节点的边界子节点;基于边界子节点为聚集节点确定边界范围。

作为本实施例一种可能的实现方式,地图显示装置,还包括:

监控模块,用于监控用户对地图的操作指令;

确定模块,还用于根据操作指令确定地图的目标层级;

切换模块,用于确定目标层级的目标节点以及展示范围,并将地图从当前层级切换到目标层级进行展示。

需要说明的是,前述对地图显示方法实施例的解释说明,也适用于本实施例的地图显示装置,故在此不再赘述。

本发明实施例的地图显示装置,通过从服务器获取原始节点的三维坐标,并对三维坐标进行转换,得到原始节点的二维坐标,根据原始节点的二维坐标,形成地图每个层级的聚集节点,并利用所有的聚集节点和原始节点形成一个聚类树,在确定需要展示的地图的当前层级后,从聚类树中确定当前层级对应的需要渲染的目标节点,之后根据与当前层级对应的展示范围,从聚类树中提取目标节点之间的层级关系以及映射关系,对目标节点进行渲染显示。本实施例中,在浏览器端形成聚类树,在确定需要展示的地图层级后,从聚类树中确定地图层级对应的需要渲染的目标节点,由于聚类树携带节点之间的层级关系,以及节点之间的映射关系,因此可从聚类树中提取出目标节点之间的层级关系及映射关系,并对目标节点进行渲染展示,相比浏览器通过与服务器进行实时交互展示地图的方法,减少了网络请求,直接由浏览器进行就近计算,更快、更灵活,同时也减少了服务器的压力,节约了服务器资源。

为了实现上述实施例,本发明还提出了一种计算机设备,包括:处理器和存储器;其中,处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现如前述实施例所述的地图显示方法。

为了实现上述实施例,本发明还提出了一种计算机程序产品,当计算机程序产品中的指令由处理器执行时,以用于实现如前述实施例所述的地图显示方法。

为了实现上述实施例,本发明还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前述实施例所述的地图显示方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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