【问题标题】:Backbone google map suggestions on implementing markers关于实施标记的骨干谷歌地图建议
【发布时间】:2013-09-10 00:10:01
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这似乎是一个很好的方法。打算试一试。
    猜你喜欢
    • 1970-01-01
    • 2018-09-26
    • 2011-10-22
    • 2011-04-27
    • 1970-01-01
    • 2018-05-10
    相关资源
    最近更新 更多