He pasado por tantos grupos de StackOverflow/google como puedo imaginar tratando de resolver este tipo.Google Map API BackBoneJS No se puede leer la propiedad 'offsetWidth' de nulo
Estoy usando BackboneJS para renderizar un mapa que tiene una ubicación de inicio y una ubicación final. En una nueva actualización de página/página, no obtengo este error, y el mapa y las cosas funcionan bien, porque estoy usando la función $ (ventana) .load (.....) de jQuery; sin embargo, cuando visualizo dinámicamente mi Vista, obtengo este error, creo, porque el DOM aún no ha cargado el DIV (fallando con document.getElementById). He intentado todo tipo de métodos diferentes a $ (window) .load(), pero no puedo obtener nada que funcione para ambos casos de uso (carga de página nueva - carga de la vista de BackboneJS). Intentar llamar a la función justo después de que la plantilla no funcione tampoco.
Cualquier ayuda sería apreciada.
Robert
Vista:
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>
¿Has intentado poner el material del mapa dentro de una llamada 'setTimeout (function() {...}, 0)'? http://stackoverflow.com/a/9145790/479863 –
Si no te importa poner esto como una respuesta que sería genial. Se corrigió – rpearce
Refactorizado a Underscore's _.diferir función basada en la recomendación de un amigo. – rpearce