2010-03-26 30 views
0

我正在为我的Uni上的课程制作类似谷歌地图的应用程序(不是复杂的,它应该加载城市的地图,而不是整个世界)。地图可以有很多图层,包括标记(餐馆,医院等) 问题是,当你有很多点时,缩小地图看起来不正确。在这个缩放级别,只有一些点需要可见(并且在最大地图尺寸,所有点)。 问题是:如何确定在指定的缩放级别应该可见哪些点?确定基于变焦的地图上应显示哪些点的算法

因为我已经实现了PR Quadtree来加速渲染,我认为我可以定义一些“高优先级”标记(它总是可见的,在地图编辑器中定义)并将它们放入队列中。在每个步骤中,标记将从队列中移除,并且所有邻居的距离至少为D单位(D取决于缩放级别)被选中并插入队列中,依此类推。 有没有比我想到的算法更好的方法?

在此先感谢!

回答

1

我有一个类似的问题,你不能避免有重叠的图标,无论用什么方法将一些图标标记为高优先级。

我做了什么(在你的情况下应用可能并不容易 - 在我的情况下,地图是在桌面应用程序中渲染的,在渲染过程之上有更多的控制权)是基于优先级进行排序的,不重叠的标记 - 也显示消息,如“删除XXX重叠标记”。这样用户就不会被信息淹没,他仍然可以看到最重要的信息。

我希望这会有所帮助。

0

不确定我完全理解,但也许可以基于从每个点到其最近邻居的平均距离的倒数,为每个图层分配一个“邻域密度”。对于特定的缩放级别,您可以计算可以舒适地查看的最大密度并将其用作阈值。

0

我从零开始设计地图应用程序时有一些经验我建议您将整个世界分成16个缩放级别。缩放级别0应显示整个世界,缩放级别15应显示街道数据。

通常情况下,您将不得不使用缩放级别0到3来具有各国的边界。并且每个缩放级别应具有前一个缩放范围的1/4的缩放范围。您可以对表格图进行缩放(假设您正在使用数据库来存储空间相关数据)。一旦将缩放级别和缩放级别的范围定义为表映射,就可以更好地控制查询数据。并建议为您的地图数据构建一个R-Tree索引。

每次你得到一个图层/表格(假设一个图层可以是国家边界,铁路轨道或街道),建议您自己定义缩放级别,而不是花时间查找算法层数不会很大。

我可以继续前进,但如果你想要特定的答案,我也可以解决它们。

相关问题