mapbox-developer-group / Mapbox-Tech-Q-A

在提问之前请自行查看文档哦,养成好习惯:https://docs.mapbox.com/
32 stars 1 forks source link

Mapbox-gl地图的pitch如何能够突破60 #27

Open Particaly opened 4 years ago

Particaly commented 4 years ago

mapboxgl地图的pitch最大值被限定为60,需要配合three实现一个天空盒效果,pitch的值能否突破60?或者这个问题将在未来得到解决?

dazhi1011 commented 4 years ago

@Particaly 先回答问题,不改源码的情况下目前是突破不了的。

简单解释下,假设你了解透视投影,如下图所示,射线左端为视点、右端为观察点,两条虚线夹角为fov,自然双实线即为地图可视范围;pitch增大即由(a)到(b),双虚线部分即为增加的地图可视范围,需要额外加载一部分地图数据。想象一下,当pitch增大到接近90°时,增加的双虚线部分也将趋向于无穷,如果此时不对加载的地图范围做限制,当前zoom下地图加载也将趋向于无穷……

pitch

当前pitch限制为60°我猜也是一个折中的选择吧,希望对你有帮助。

Particaly commented 4 years ago

是的,我尝试修改了源码中的transform部分的代码,的确突破了60的限制,但是mapbox会加载更多甚至无穷远处的数据,或许mapbox能够相对于地图当前中心点更远处(例如距离超过一定范围)做出限制加载数据,但是如何实现我并没有思路,如果可行的话,希望官方可以考虑实现一下,同时谢谢你的解答!

dazhi1011 commented 4 years ago

@Particaly 既然都看到transform了,何不再试一试,提供个思路共同探讨: 把限制加载的判断逻辑加到coveringTiles方法中;再进一步,在地图边缘处对应的z深度添加个遮挡层,效果会好一点。

ParryQiu commented 4 years ago

这里有相关的讨论以及实现方法。 https://github.com/mapbox/mapbox-gl-js/issues/3731

详细可以参见这个 PR https://github.com/mapbox/mapbox-gl-js/pull/8975

defineconst commented 3 years ago

v2 已经到90度了。