API Google Map BackBoneJS Не удается прочитать свойство offsetWidth со значением null

Я прошел через столько групп StackOverflow/google, сколько могу себе представить, пытаясь понять этого парня.

Я использую BackboneJS для отображения карты с начальным и конечным местоположением. При обновлении новой страницы/страницы я не получаю эту ошибку, и карта и прочее работают нормально, потому что я использую окно jQuery $ ().load (.....)функция; однако, когда я динамически визуализирую свое представление, я получаю эту ошибку -я полагаю -, потому что DOM еще не загрузил DIV (с ошибкой document.getElementById ). Я пробовал всевозможные методы, кроме окна $ ()..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>
5
задан rpearce 12 August 2012 в 20:37
поделиться