我经历了尽可能多的 StackOverflow/google 小组,我可以想象试图找出这个人。
我正在使用 BackboneJS 呈现具有起始位置和结束位置的地图。在新的页面/页面刷新时,我没有收到此错误,并且地图和东西工作正常,因为我使用的是 jQuery 的 $(window).load(.....) 函数;然而,当我动态渲染我的视图时,我得到了这个错误——我相信——因为 DOM 还没有加载 DIV(由于 document.getElementById 失败)。除了 $(window).load() 之外,我已经尝试了各种不同的方法,但我无法获得适用于这两种用例的任何方法(新页面加载——BackboneJS 视图加载)。尝试在模板之后立即调用该函数也不起作用。
任何帮助,将不胜感激。
罗伯特
看法:
App.Views.MapShow = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render');
var self = this;
$(window).load(function() {
self.renderMap();
});
},
render: function() {
this.renderTemplate();
},
renderTemplate: function() {
this.$el.html(JST['path/to/show/file']());
},
renderMap: function() {
var from = this.model.get('location_from');
var to = this.model.get('location_to');
var geocoder = new google.maps.Geocoder();
var map = new google.maps.Map(document.getElementById('mapCanvas'), {
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(map);
var request = {
origin: from,
destination: to,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
}
});
HTML:
<div class="map" id="mapCanvas"></div>