关于实施标记的骨干谷歌地图建议

时间:2013-09-10 00:10:01

标签: javascript google-maps backbone.js google-maps-api-3 code-organization

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社区

1 个答案:

答案 0 :(得分:1)

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

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