Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于缩放确定地图上哪些点应可见的算法_Java_Maps_Gis_Algorithm - Fatal编程技术网

Java 基于缩放确定地图上哪些点应可见的算法

Java 基于缩放确定地图上哪些点应可见的算法,java,maps,gis,algorithm,Java,Maps,Gis,Algorithm,我正在为我大学的一门课程制作一个类似谷歌地图的应用程序(不是复杂的东西,它应该加载一个城市的地图,而不是整个世界)。地图可以有许多层,包括标记(餐厅、医院等) 问题是,当你有很多点,你缩小地图,它看起来不正确。在此缩放级别下,只需要看到一些点(在最大贴图大小下,所有点)。 问题是:如何确定对于指定的缩放级别,哪些点应该可见 因为我已经实现了一个PR四叉树来加速渲染,所以我想我可以定义一些“高优先级”标记(它们总是可见的,在地图编辑器中定义)并将它们放入队列中。在每一步中,都会从队列中删除一个标记

我正在为我大学的一门课程制作一个类似谷歌地图的应用程序(不是复杂的东西,它应该加载一个城市的地图,而不是整个世界)。地图可以有许多层,包括标记(餐厅、医院等) 问题是,当你有很多点,你缩小地图,它看起来不正确。在此缩放级别下,只需要看到一些点(在最大贴图大小下,所有点)。 问题是:如何确定对于指定的缩放级别,哪些点应该可见

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


提前谢谢

我也遇到了类似的问题,无论采用何种方法将某些图标标记为高优先级,都无法避免图标重叠

我所做的(在您的案例中可能不容易应用-在我的案例中,地图是在桌面应用程序中渲染的,在渲染过程中有更多的控制)是基于优先级排序,只绘制不重叠的标记-还显示类似“XXX重叠标记已移除”的消息。这样,用户就不会被信息淹没,他仍然可以看到最重要的信息


我希望这能有所帮助。

我也遇到过类似的问题,无论使用何种方法将某些图标标记为高优先级,都无法避免图标重叠

我所做的(在您的案例中可能不容易应用-在我的案例中,地图是在桌面应用程序中渲染的,在渲染过程中有更多的控制)是基于优先级排序,只绘制不重叠的标记-还显示类似“XXX重叠标记已移除”的消息。这样,用户就不会被信息淹没,他仍然可以看到最重要的信息


我希望这能有所帮助。

我不确定我是否完全理解,但也许你可以根据每个点到最近邻点的平均距离的倒数,为每个层指定一个“邻域密度”。对于特定的缩放级别,您可以计算一个可轻松查看的最大密度,并将其用作阈值。

我不确定是否完全理解,但也许您可以根据每个点到其最近邻居的平均距离的倒数,为每个层指定一个“邻域密度”。对于特定的缩放级别,您可以计算出可轻松查看的最大密度,并将其用作阈值。

我在从头开始设计地图应用程序方面有一些经验,我建议您将整个世界划分为16个缩放级别。缩放级别0应显示整个世界,缩放级别15应覆盖街道数据

通常,必须使用0到3的缩放级别才能确定国家的边界。每个缩放级别的缩放范围应为前一个缩放范围的1/4。可以使用“缩放到表”地图(假设您使用数据库存储空间相关数据)。定义缩放级别和缩放级别到表映射的范围后,您就可以更好地控制数据查询。建议为地图数据建立索引

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


我可以继续,但如果你想要具体的答案,我也可以解决它们。

我有一些从头设计地图应用程序的经验,我建议你将整个世界分成16个缩放级别。缩放级别0应显示整个世界,缩放级别15应覆盖街道数据

通常,必须使用0到3的缩放级别才能确定国家的边界。每个缩放级别的缩放范围应为前一个缩放范围的1/4。可以使用“缩放到表”地图(假设您使用数据库存储空间相关数据)。定义缩放级别和缩放级别到表映射的范围后,您就可以更好地控制数据查询。建议为地图数据建立索引

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

我可以继续,但如果你想要具体的答案,我也可以解决