Как предварительно загрузить часть карт Google? - программирование
Подтвердить что ты не робот

Как предварительно загрузить часть карт Google?

Я создаю веб-приложение с API Карт Google, мне нужно плавно масштабировать область, поэтому я использую setTimeout для увеличения уровня масштабирования каждую секунду, но в некотором месте с плохой сетью изображения карты слишком медленно, чтобы страница быстро превратилась в белую страницу....

поэтому мой вопрос в том, можно ли предварительно загрузить часть Google Maps (увеличить от 3 до 16 точек)

4b9b3361

Ответ 1

вы могли бы предварительно загрузить его в скрытом div или iframe.

но вы должны убедиться, что это не против Условий использования API Карт Google/Google Планета Земля

10.1.3 Ограничения на экспорт или копирование данных.

(b) Отсутствие предварительной выборки, кэширования или хранения содержимого. Вы не должны предварительно выбирать, кэширования или хранения любого Контента, за исключением того, что вы можете хранить: (i) ограниченный количества Содержимого в целях повышения эффективности когда вы делаете это временно, надежно и таким образом, чтобы не допускалось использование Контента вне Обслуживание; и (ii) любой идентификатор или ключ контента, который API Карт Документация специально позволяет вам хранить. Например, вы должны не используйте Контент для создания независимой базы данных "мест".

Ответ 2

Сделать код

Я только что создал script на основе 5-летней идеи RASG. Позвольте создать скрытую карту, и когда она будет полностью загружена, увеличьте ее. Мы делаем это снова и снова, пока она не кэширует все масштабирования. Здесь работает скрипка. Я разместил информацию div в верхнем правом углу, чтобы просмотреть, как выполняется масштабирование.

// init the hidden map
var mapOptions = {
  center: new google.maps.LatLng(center.lat, center.lng),
  zoom: minZoom + 1
};
var preMap = new google.maps.Map(document.getElementById('map-canvas-hidden'), mapOptions);

// when the current hidden map is fully loaded, zoom it in 
preMap.addListener('tilesloaded', function() {
  $('#out').html('Zoom ' + preMap.getZoom() + ' preloaded');

  // if there is zoom to zoom-in, do it after some rest
  if(preMap.getZoom() < maxZoom) {
    setTimeout(function(){
      preMap.setZoom(preMap.getZoom() + 1);
    }, 50);
  }
});

Действительно ли он кэширует карту?

Хорошо, очистите кеш браузера и откройте скрипку.

введите описание изображения здесь

В сетевой активности браузера мы видим много загрузок изображений. Затем увеличьте масштаб карты и снова просмотрите ее. Похоже, все изображения загружаются из кеша.

введите описание изображения здесь

Надеюсь, что это поможет.