如何使用Backbone设计Map应用程序?

时间:2013-08-07 20:25:32

标签: javascript backbone.js coffeescript leaflet

所以我想用骨干(可能使用Leaflet.js)构建一个地图应用程序。我对如何设计这个有一些想法,我想知道是否有一个共同的设计模式如何做到这一点。

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

我有两种方法可以做到这一点 -

1.每个标记都有一个骨干模型,有一组标记,有一个适用于这个集合的Map View。因此,每当此集合发生更改时,请重新渲染地图。

2.有一个名为MapModel的模型,它包含json,并有一个过滤json的数据函数(基于geosearch或其他东西)。然后地图简单地渲染这个json。

1的优点是我认为选择很容易,但是由于我的地图可以处理成千上万的对象,我觉得事情会非常慢。

有没有其他方法可以做到这一点,或者我最喜欢的两个想法之一是什么?

由于

1 个答案:

答案 0 :(得分:0)

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

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

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

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

如果要过滤模型上的过滤器,这很容易,因为它是主干集合,那么您渲染视图。

  

我的地图可以处理成千上万的对象

这是有问题的。在webmap上放置如此大量的标记是不可能的,你应该计划如何处理它(a popular plugin