Hello 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社区
答案 0 :(得分:1)
您应该拥有自己的集合,其中包含支持标记的数据,然后是集合的视图,其中包含每个子项的视图。子视图将在谷歌地图上呈现为地图标记。这样,当孩子更新视图时,可以轻松更新地图标记(即,改变其在地图上的位置)。此外,当包含子项的集合更改父视图时,可以轻松添加/删除子视图(即标记)。
您可以将Backbone Map视图提供给集合视图,然后可以将该视图提供给它创建的子视图。您需要添加一个getMap()方法或类似于Map视图的方法,以便孩子们可以让Map添加自己。