1

你好 stackoverflow 社区,

我试图让谷歌地图和骨干一起弄脏手。两者都进行得很好。我只有一个小问题,我有点难过。我的地图有一个主干视图,如下所示:

 var MapWidget = Backbone.View.extend({

    el: '.map-widget',

    model: new Model,

    center: function (e) {

    },

    addMarker: function () {


    },

    render: function() {

        this.map = new google.maps.Map(this.el, this.model.attributes);

        this.bindings();

        console.log('Map Widget Rendered');

        return this;

    },

    initialize: function() {

        console.log('Map Widget initialized');

    }

});

这是模型:

  var MapWidget = Backbone.Model.extend({

defaults: {

      zoom: 8,

      center: new google.maps.LatLng(39.23036, -94.48182),

      mapTypeId: google.maps.MapTypeId.ROADMAP,

      disableDefaultUI: true

},

initialize: function(){


}

});

如您所见,所有地图选项都是从地图模型中提取的。我很难弄清楚(或组织)的是,如果我开始向我的地图添加标记,标记应该存储在同一个地图模型中还是应该有自己的集合? 如果我应该有一个标记集合,那么有一个markerLoader视图将标记从它自己的标记集合添加到地图中是否更有意义?

我希望所有这些都是有道理的,只是从一些经验丰富的骨干人员或任何想要加两分钱的人那里寻找一些建议。如果我需要解释更多,请告诉我。谢谢stackoverflow社区

4

1 回答 1

1

您应该拥有自己的集合,其中包含支持标记的数据,然后是集合的视图,其中包含每个孩子的视图。子视图将在谷歌地图上呈现自己作为地图标记。这样,当孩子更新视图时,可以轻松更新地图标记(即更改其在地图上的位置)。此外,当包含子视图的集合更改时,父视图可以轻松添加/删除子视图(即标记)。

您可以将 Backbone Map 视图提供给集合视图,然后集合视图可以将该视图向下提供给它创建的子视图。您将需要添加一个 getMap() 方法或类似于 Map 视图的方法,以便孩子们可以获取 Map 以将自己添加到其中。

于 2013-09-10T20:21:38.660 回答