В веб-картографии уровень масштабирования (zoom level) определяет степень детализации отображаемой карты. В HERE Maps API for JavaScript этот параметр является базовым механизмом управления тем, насколько «близко» отображается карта к поверхности Земли. Масштабирование напрямую связано с тайловой системой, проекцией карты и поведением визуальных слоёв.
HERE Technologies реализует картографическую систему, основанную на стандартной веб-тайловой модели, где каждый уровень zoom соответствует удвоению или уменьшению количества тайлов по осям X и Y.
В HERE Maps API каждый экземпляр карты (H.Map)
поддерживает ограниченный диапазон zoom-уровней:
Типичный диапазон зависит от используемого слоя (tile layer), но чаще всего:
minZoom ≈ 1–2maxZoom ≈ 20–21Пример задания диапазона:
const platform = new H.service.Platform({
apikey: 'YOUR_API_KEY'
});
const defaultLayers = platform.createDefaultLayers();
const map = new H.Map(
document.getElementById('map'),
defaultLayers.vector.normal.map,
{
center: { lat: 52.5200, lng: 13.4050 },
zoom: 10,
minZoom: 3,
maxZoom: 18
}
);
Ограничение zoom используется для контроля нагрузки и предотвращения выхода за пределы доступных тайлов.
Zoom в HERE Maps является дискретным, но поддерживает плавные переходы (fractional zoom). Это означает:
При дробных значениях происходит:
Карты HERE используют схему тайлов 256x256 пикселей
(векторные слои могут отличаться внутренним представлением).
Количество тайлов на уровне zoom вычисляется по формуле:
2^z2^zгде z — уровень масштабирования.
| Zoom | Тайлов по X | Детализация |
|---|---|---|
| 0 | 1 | весь мир |
| 1 | 2 | крупные регионы |
| 5 | 32 | страны/области |
| 10 | 1024 | города |
| 15 | 32768 | улицы |
Каждое увеличение zoom на 1 удваивает детализацию.
HERE Maps использует Web Mercator projection (EPSG:3857). В этой проекции:
Фактический масштаб на карте зависит от:
При изменении zoom API выполняет:
Векторные карты особенно эффективно поддерживают плавный zoom благодаря GPU-рендерингу.
map.setZoom(12);
const zoom = map.getZoom();
map.setZoom(14, true);
Второй параметр включает анимацию перехода.
HERE Maps API предоставляет события для отслеживания изменений масштаба:
map.addEventListener('mapviewchange', function () {
const zoom = map.getZoom();
console.log('Zoom changed:', zoom);
});
Также используются более специализированные события:
mapviewchangebegin — начало измененияmapviewchange — в процессе измененияmapviewchangeend — завершениеОграничения zoom применяются на уровне:
H.Map)H.map.layer.TileLayer)Если установлен диапазон:
minZoom: 4,
maxZoom: 16
то:
Ограничения важны для:
Zoom в визуальном представлении зависит от:
devicePixelRatioНа Retina-дисплеях один и тот же zoom выглядит более детализированным, поскольку тайлы рендерятся в повышенном разрешении.
В HERE Maps API современные карты преимущественно используют векторные слои, что делает zoom более гибким.
Приближённое соответствие масштаба:
Формально:
scale ≈ 1 / 2^zoom
Однако реальный масштаб зависит от:
На уровнях zoom 18–21 наблюдаются особенности:
Оптимизации включают:
Слои могут включаться и выключаться по диапазону zoom:
layer.setMin(8);
layer.setMax(15);
Это позволяет:
При использовании жестов (mouse wheel, touch pinch):
Это обеспечивает стабильность восприятия при навигации по карте.