При инициализации карты Leaflet с помощью Backbone.js я больше не могу получить доступ к этой точной карте.
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 © 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: true _leaflet_events: Object _leaflet_id: 20 _limitedUpdate: function s() {var a=arguments;return n?(o=!0,void 0):(n=! 0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),t.apply(i,a),void 0);} _map: Object _tileContainer: HTMLDivElement _tileImg: HTMLImageElement _tiles: Object _tilesToLoad: 0 _url: "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" options: Object прототип: Объект
Но почему я не могу получить доступ к этой карте после этого?
Спасибо!
mapView.map.locate
предполагает, что вы ожидаете найти переменнуюmapView
, когда у вас есть только свойствоmapView
в одном из ваших представлений. И не$(this.$el)
, просто используйтеthis.$el
;this.$
совпадает сthis.$el.find
. - person mu is too short   schedule 25.07.2013