1

Я столкнулся с очень странной проблемой с Картами Google в Chrome 5.0.375.99: , если вы динамически создаете несколько экземпляров карт, у вторых и у них есть странная ошибка, где она не отображается правильно отображается только в части пространства карты.Проблемы с динамической интеграцией карт Google

Некоторые примеры страниц:
one default - Когда вы нажимаете addOne, возникает проблема с новым объектом.
none default - Когда вы нажимаете addOne второй раз, новый объект имеет проблему.
two default - Обе исходные карты отображаются правильно, но когда вы нажимаете addOne, у нового объекта возникает проблема.

Действительно необычная часть заключается в том, что изменение размера окна приведет к неправильному отображению карт, чтобы правильно отображать их. Это заставляет меня думать, что это исправление - это событие перерисовывания

+0

Где бы вы получите, что 'googleMap' плагин? Он пытается установить размеры вашего div, но * после * он уже инициализировал карту. Если ваши динамические карты делятся без ширины и высоты, у GMaps не будет параметров, с которыми необходимо работать, когда вы инициализируете карту. –

+0

Я изменил его с http://awardwinningfjords.com/2009/07/22/google-maps-with-jquery.html. Тем не менее, переключение на .css с .each имеет тот же результат. – Rixius

ответ

1

Полумесяц Свежий правильный, поскольку размер div должен быть задан перед инициализацией новой карты на div.

Чтобы установить ширину высоту перед созданием карты ДИВ вы можете попробовать следующее:

return this.each(function(){ 
    var jT = $(this), 
      center = new mAPI.LatLng(options.lat, options.long), 
      geocoder = new mAPI.Geocoder(); 

    jT.css({ 
     'width': hw[0], 
     'height': hw[1], 
     'margin-left': 'auto', 
     'margin-right': 'auto' 
    }); 

    jT.data('map', new mAPI.Map(this, $.extend(options, { center: center }))); 

    geocoder.geocode({ address: address }, function(results, status) { 
     if (status === mAPI.GeocoderStatus.OK && results.length) { 
      if (status !== mAPI.GeocoderStatus.ZERO_RESULTS) { 
       jT.data('map').setCenter(results[0].geometry.location); 
       var dump = new mAPI.Marker({ 
         position: results[0].geometry.location, 
         map: jT.data('map') 
       }); 
       return dump; 
      } 
     } 
    }); 
}); 

выше «должен» работать, нету тестировал Тхо

Смежные вопросы