Предварительная загрузка наложения Google Maps - PullRequest
2 голосов
/ 27 августа 2010

Я пытаюсь использовать карту Google в качестве фона с фиксированным наложением. Посмотрите-посмотрите .

Вы видите проблему - пока загружается, текст не читается. Оверлей загружается Google's JS. Как я могу спрятать карту, пока оверлей не загрузится? (Или лучшее решение?)

Ответы [ 2 ]

4 голосов
/ 31 августа 2010

На самом деле вы можете использовать JavaScript, чтобы карта отображалась только при загрузке оверлея:

document.observe('dom:loaded', function()
{
  if (GBrowserIsCompatible()) {
    var overlaySrc = 'img/contact_map_overlay.png';
    var preloadOverlay = new Image();

    preloadOverlay.onload = function() {
      var map = new GMap2(document.getElementById("map_canvas"));
      map.setCenter(new GLatLng(-33.82568, 151.2180955505371), 14, G_PHYSICAL_MAP);
      var mapTypeControl = new GMapTypeControl();
      var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(80, 250));
      map.addControl(new GSmallMapControl(), topRight);
      var mapTarget = new GScreenOverlay(overlaySrc, new GScreenPoint(0.0, 0.0, 'fraction', 'fraction'), // screenXY
      new GScreenPoint(0, 0),                                                                                               // overlayXY
      new GScreenSize(1, 1, 'fraction', 'fraction')                                                                         // size on screen
      );
      map.addOverlay(mapTarget);

      var pin = new GIcon(G_DEFAULT_ICON);
      pin.image = "img/pin.png";
      pin.shadow = "no-shadow";
      pin.iconSize = new GSize(34, 43);
      markerOptions = {
        icon: pin
      };

      var marker = new GMarker(new GLatLng(-33.82568, 151.240635), markerOptions);
      map.addOverlay(marker);
    }

    preloadOverlay.src = overlaySrc;
  }
});

Google просто отображает изображение с сервера, поэтому его загружают в кэш перед отображениемкарта решит вашу проблему.

0 голосов
/ 31 августа 2010

Я не вижу способа в v2 Api , чтобы либо узнать, когда наложение загрузилось, либо скрыть карту, пока она не закончит наложение.

Событие load () срабатывает до того, как наложения завершат загрузку.Я заметил, что оверлей довольно велик в 684KB.Меньший оверлей загружается быстрее.

Вы можете также рассмотреть вопрос о том, чтобы просто поместить фоновое изображение или что-то позади текста, который мы скрываем (предоставляется только на 5 секунд).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...