无法使用Backbone.js访问Leaflet地图

时间:2013-07-25 16:51:18

标签: backbone.js leaflet

使用Backbone.js初始化Leaflet地图时,我无法再访问此精确地图。

E.g:

mapView.map.locate({setView: true, maxZoom: 10});

将导致

  

TypeError:'undefined'不是函数(评估'mapView.map.locate({setView:true,maxZoom:10})')

地图通过仪表板视图中的单独视图进行初始化,如:

this.mapView = new MapView();
    $(this.$el).find('.content').append(this.mapView.el).find('.map').addClass('full').css({
        'height': $(window).height() / 2
    });

此视图如下所示:

var MapView = Backbone.View.extend({
    template: _.template(""),
    render: function ()
    {
        this.$el.html(this.template());

        this.map = L.map(this.el).setView([48.00786, 13.17989], 8);

        this.map = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            attribution: 'OpenStreetMap &copy; Mitwirkende der <a href="http://osm.org/copyright">OpenStreetMap</a>'
        }).addTo(this.map);

        return this;
    }
});

我可以通过console.log来访问地图对象。结果如下:

  

_animated:true   _bgBuffer:HTMLDivElement   _clearBgBufferTimer:4   _container:HTMLDivElement   _initHooksCalled:是的   _leaflet_events:对象   _leaflet_id:20   _limitedUpdate:function s(){var a = arguments; return n?(o =!0,void 0):( n =!0,setTimeout(function(){n =!1,o&amp;&amp;(s.apply) (i,a),o =!1)},e),t.apply(i,a),void 0);}   _map:对象   _tileContainer:HTMLDivElement   _tileImg:HTMLImageElement   _tiles:对象   _tilesToLoad:0   _url:“http:// {s} .tile.openstreetmap.org / {z} / {x} / {y} .png”   选项:对象    proto :对象

但为什么我之后无法访问此地图?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题解决了。我只是将整个地图事物移动到视图中,并没有将地图分成另一个视图。这可能不是最好的方法,但它确实很好。