首页 > 解决方案 > Mapbox GL - 用于非聚类和活动功能的过渡动画

问题描述

在 Mapbox GL JS 中,我希望使用集群 + 为当前定义为“活动”的一项功能使用不同的图标。我希望对必要的过渡(去集群+活动功能的更改)进行动画处理,但找不到让这一切发生的方法。

Mapbox 提供了一个示例,展示了如何实现集群,它为集群和非集群特征使用不同的层。此技术还可用于在其自己的层中使用不同的图像渲染“活动”特征。当一个集群分解(“非集群”)为特征时,它基本上会从集群层中移除,而这些特征会被添加到“非集群”特征层中。但这不允许添加过渡动画,因为这里并没有真正的过渡。我想展示集群拆分为特征,每个特征都移动到各自的位置。

任何想法如何解决这个问题?

一些不能提供完整答案的想法:

  1. 使用带有markercluster 插件的 Leaflet及其“蜘蛛”行为进行聚类。这很有效,并提供了一个很好的“蜘蛛”过渡动画来进行聚类。然而,传单和 Mapbox GL 之间没有“官方”绑定,所以我不愿意使用它(我需要修改这个,它基于未记录的 Mapbox 内部)。此外,我现在确定这在性能方面是好是坏,具有数千个功能。而且我从经验中知道,添加动画来修改传单标记的形状(用于活动/非活动过渡)并没有真正起作用。

  2. 在 Mapbox 中使用标记,而不是图层,但是如何进行任何类型的聚类?

标签: leafletmapboxmapbox-gl-js

解决方案


我想不出任何合理的方法来仅使用 Mapbox GL JS 来实现这一点,缺少学习 WebGL 和实现自定义源。

但我不会取消 Leaflet+Mapbox 方法——根据我的经验,性能还可以(尽管我没有测试过集群或你想要做的事情)。

OpenLayers 也有类似的方法:https ://openlayers.org/en/latest/examples/mapbox-layer.html我也使用过它并且效果很好。

最后,似乎有很多 Leaflet 和 OpenLayers 库专门解决了动画聚类问题:https ://gis.stackexchange.com/questions/17250/how-to-create-animated-cluster-markers-in-openlayers -leaflet(而且这些答案中的大多数都非常古老,所以现在可能有更多的库)。


推荐阅读