Как расширить уровень масштабирования за пределы доступных плиток WMTS в API JavaScript Google Maps?Javascript

Форум по Javascript
Ответить
Anonymous
 Как расширить уровень масштабирования за пределы доступных плиток WMTS в API JavaScript Google Maps?

Сообщение Anonymous »

Я работаю с слоями листов WMTS из геосервисов в API JavaScript Карт Google. Моя проблема заключается в том, что слой ORTHOPHOTOS имеет максимальный уровень масштабирования 19, поскольку другие фрагменты недоступны (что приводит к 400 ошибкам при запросе более высоких уровней масштабирования).
Цель:
Я хочу разрешить пользователям увеличивать масштаб, даже если дополнительные фрагменты недоступны. По сути, я хочу, чтобы карта растягивала или интерполировала максимально возможный уровень масштабирования при увеличении выше уровня 19.

Текущая реализация
Вот запрос WMTS по умолчанию, который я использую для получения фрагментов:

Код: Выделить всё

const tileUrl = `https://data.geopf.fr/wmts?layer=HR.ORTHOIMAGERY.ORTHOPHOTOS&style=normal&tilematrixset=PM&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fjpeg&TileMatrix=${zoom}&TileCol=${coord.x}&TileRow=${coord.y}`;
Я интегрирую это в Карты Google, используя собственный MapType:

Код: Выделить всё

const orthoMapType = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
if (zoom > 19) {
// What should I do here to handle higher zoom levels?
return null; // Currently returns nothing, but I want to "stretch" the last available zoom level
}
return `https://data.geopf.fr/wmts?layer=HR.ORTHOIMAGERY.ORTHOPHOTOS&style=normal&tilematrixset=PM&Service=WMTS&Request=GetTile&Version=1.0.0&Format=image%2Fjpeg&TileMatrix=${zoom}&TileCol=${coord.x}&TileRow=${coord.y}`;
},
tileSize: new google.maps.Size(256, 256),
maxZoom: 22, // I want to allow zooming up to 22, even if tiles are only available up to 19
minZoom: 0,
name: "Orthophotos"
});

const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 48.8566, lng: 2.3522 },
zoom: 12,
mapTypeControlOptions: {
mapTypeIds: ["ortho"]
}
});

map.mapTypes.set("ortho", orthoMapType);
map.setMapTypeId("ortho");
Проблема
  • При масштабировании выше уровня 19 карта становится пустой, поскольку нет доступных фрагментов.
Что я пробовал
  • Настройка maxZoom: 22 в параметрах ImageMapType, но это не решает проблему отсутствия плиток.
  • Возврат значения null для масштабов > 19, что приводит к появлению пустых плиток.
Вопросы
  • Как я могу растянуть или интерполировать последний доступный уровень масштабирования (19) для имитации более высоких уровней масштабирования (20, 21, 22) в Картах Google?
Среда
  • Javascript Vanilla
  • Google Maps JavaScript API v3


Подробнее здесь: https://stackoverflow.com/questions/797 ... vascript-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»