Карты Google v3 против IE ... SCRIPT5022 - PullRequest
2 голосов
/ 14 марта 2012

Как в теме: везде моя реализация работает в FF, Chrome, Opera ... IE: SCRIPT5022

Я инициализирую Карты Google с помощью функции обратного вызова, потому что у меня была неопределенная проблема google.maps.MapTypeID.

<script src="http://maps.google.com/maps/api/js?sensor=false&language=pl&callback=gmapInit" type="text/javascript"><\/script> 

и gmapInit:

  this.map = new google.maps.Map(print_it.doc.getElementById('location-map'), {
     center                     : new google.maps.LatLng(51.917168,19.138184),
     zoom                       : 6,
     minZoom                    : 6,
     maxZoom                    : 16,
     mapTypeId                  : google.maps.MapTypeId.HYBRID,
     scrollwheel                : false,
     disableDefaultUI           : true,
     navigationControl          : true,
     navigationControlOptions   : {
           style: google.maps.NavigationControlStyle.SMALL
     }
  });

print_it.doc - ссылка на документ в новом окне. и IE терпит неудачу в this.map = new google.maps.Map (.....);

помогите плз!

1 Ответ

2 голосов
/ 15 марта 2012

Это проблема объема.

В IE невозможно перемещать узлы между документами.

Итак, что произойдет, когда вы инициализируете карту из открывателя:

  1. API получит доступ к target-div внутри нового окна (без проблем пока)
  2. API создаст множество элементов для построения карты (API сделает это в рамках текущего документа, а не внутри нового окна, проблемы начнутся)
  3. API должен поместить созданные элементы на карту, но в IE это не удастся, потому что элементы были созданы в другом документе (внутри средства открытия) и должны быть перемещены в новое окно.

Что вы можете сделать: Также включите API-интерфейс maps в новом окне и используйте google-object в новом окне для всех вызовов, связанных с картой в новом окне:

пример :

(при условии, что print_it является оконным объектом, и вы включили API-интерфейс maps в новом окне)

this.map = new print_it.google.maps.Map(print_it.doc.getElementById('location-map'), {
     center                     : new print_it.google.maps.LatLng(51.917168,19.138184),
     zoom                       : 6,
     minZoom                    : 6,
     maxZoom                    : 16,
     mapTypeId                  : print_it.google.maps.MapTypeId.HYBRID,
     scrollwheel                : false,
     disableDefaultUI           : true,
     navigationControl          : true,
     navigationControlOptions   : {
           style: print_it.google.maps.NavigationControlStyle.SMALL
     }
  });
...