0

所以我想用主干构建一个地图应用程序(可能使用 Leaflet.js)。我对如何设计这个有一些想法,我想知道是否有一个通用的设计模式来解决这个问题。

该地图最终将与其他可视化集成 - 例如,如果我在地图上选择一个标记,则会在另一个可视化中发生某些事情。我还必须能够对地图中的标记进行地理搜索。

我想到了两种方法-

1.每个标记有一个主干模型,有一个标记集合,有一个在这个集合上工作的地图视图。所以每当这个集合发生变化时,重新渲染地图。

2.有一个名为 MapModel 的模型来保存 json,并有一个过滤 json 的数据函数(基于地理搜索或其他东西)。然后 Map 简单地呈现这个 json。

1的好处是我觉得做选择会很容易,但是因为我的地图可能要处理几万到几十万个物体,我觉得事情会很慢。

有没有另一种方法可以做到这一点,或者我有两个想法中的哪一个更可取?

谢谢

4

1 回答 1

0

我一直在研究完全相同的问题,我并没有声称找到了“通用设计模式”,但我可以告诉你我做了什么。

我创建了一个 MapModel,其中包含制作地图所需的信息:例如,如果您想在地图上放置商店,则为商店集合。

然后我创建了一个没有标记集合的地图视图:问题是传单中的一组标记应该被分组在 L.LayerGroup 类中(例如控制何时添加或删除它们 -示例)。因此,将标记放在 LayerGroup 和伪装成模型的集合中感觉非常笨拙。

所以我创建了一个包含所有标记的 layerGroup,这个图层是 MapView 的一个属性。如果您的应用程序很复杂,您甚至可以为每一层创建一个子视图。

当您想要过滤模型时,您可以过滤模型,这很容易,因为它是主干集合,然后您渲染视图。

我的地图可能会处理数万到数十万个对象

这是有问题的。在 webmap 上放置这么多的标记是不可能的,你应该计划如何处理它(一个流行的插件

于 2013-08-08T12:21:25.913 回答