Javascript Mapbox:根据将添加到地图的两个点调整缩放级别
我目前正在制作一个小动画,将点逐个添加到地图中,并使用Javascript Mapbox:根据将添加到地图的两个点调整缩放级别,javascript,algorithm,maps,mapbox,mapbox-gl-js,Javascript,Algorithm,Maps,Mapbox,Mapbox Gl Js,我目前正在制作一个小动画,将点逐个添加到地图中,并使用flyTo()函数从一个点移动到另一个点。然而,我面临一个算法问题。我基本上想flyTo()到下一个点,开始时的zoomLevel非常低,如果下两个点将在我要飞到的当前点附近,则逐渐地放大到越来越近的位置(从而增加zoomLevel) 到目前为止,我已经完成了所有的工作,只是想知道如何计算缩放级别,它将取决于我正在努力避免的下几个点(假设n>=2)的数据。我想这样做是因为我希望苍蝇不要放大太快太远的一个点,如果下两个点也远。但是,如果下一个点
flyTo()
函数从一个点移动到另一个点。然而,我面临一个算法问题。我基本上想flyTo()
到下一个点,开始时的zoomLevel
非常低,如果下两个点将在我要飞到的当前点附近,则逐渐地放大到越来越近的位置(从而增加zoomLevel
)
到目前为止,我已经完成了所有的工作,只是想知道如何计算缩放级别,它将取决于我正在努力避免的下几个点(假设n>=2)的数据。我想这样做是因为我希望苍蝇不要放大太快太远的一个点,如果下两个点也远。但是,如果下一个点很近,我希望缩放级别足够大,以便能够轻松区分地图上的所有n个下一个点
下面是一个示例用例
想象一下,在图1中,我显示了从左到右的所有点。所有的前两个点都相距很远,如果我想了解它们在海洋上的位置,我不想放大到接近的地方
但对于陆地上的生物,我希望能够区分很多聚集在一起的点(见图2)
感谢您的帮助。我正在使用Mapbox和JS
编辑:
想象一下以下一组点(具有横向和纵向)
1-59.8463128411326 19.5720545674979
2-59.8712885580175 19.5254794526926
3-59.8715429614859 19.5254385272128
4-60.00717914911119.916749893879
5-60.1522393638339 24.9313064664834
6-60.1520022377932 24.9304419569903
7-60.1670854351356 24.9650805038874
8-60.167067202619 24.9651439854963
9-60.1670844082878 24.96491329706
10-60.1699523632091 24.9296120101989
点1到6之间的距离(有一个例外)相当大,因此为了不丢失上下文,我不想对这些点放大太多,但对于点7到10,距离要小得多(特别是7和8非常接近)所以我想用缩放级别Z飞到第7点,然后当第8点出现时,我想确保新的缩放级别Z'(>Z)足够大,以便我可以轻松区分这两个点
我认为您需要提供一些建议的输入数据和至少一些相关预期输出的概念。这里显然有一个有趣的算法问题,但很难解决(可能特别是对于我们这些不知道映射工具的人,但甚至可能是那些知道映射工具的人)感谢@ScottSauyet,我添加了一个编辑:)ISTM,您希望对匹配每个步骤过渡到适当缩放级别的结果进行一些曲线平滑。我认为平滑是你需要根据看起来好的东西来调整的东西。但在纬度和经度差异的绝对值之和上,映射可能是单调的。(虽然我很想做乘积,但那根本不起作用。)我不知道什么样的映射函数会起作用,线性的,对数的,其他的。但和几个人一起玩应该不难。