J'ai parcouru autant de groupes StackOverflow/google que je peux imaginer pour essayer de comprendre ce type.
J'utilise BackboneJS pour rendre une carte qui a un emplacement de départ et un emplacement d'arrivée. Lors d'un rafraîchissement de la page, je n'obtiens pas cette erreur, et la carte et les autres éléments fonctionnent correctement, car j'utilise la fonction jQuery $(window).load(.....) ; cependant, lorsque je rends dynamiquement ma vue, j'obtiens cette erreur - je crois - parce que le DOM n'a pas encore chargé le DIV (échec avec document.getElementById). J'ai essayé toutes sortes de méthodes différentes autres que $(window).load(), mais je n'arrive pas à obtenir quelque chose qui fonctionne pour les deux cas d'utilisation (chargement d'une nouvelle page -- chargement d'une vue BackboneJS). Essayer d'appeler la fonction juste après le template ne fonctionne pas non plus.
Toute aide serait appréciée.
Robert
Vue :
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>