Система отображения карт в HERE Maps API строится вокруг концепции тайловой мозаики, где карта представляется набором квадратных изображений или векторных фрагментов фиксированного размера. Каждый уровень масштабирования соответствует собственному набору тайлов, обеспечивая плавную детализацию и высокую производительность рендеринга.
Тайловая система опирается на проекцию Web Mercator (EPSG:3857), при которой поверхность Земли преобразуется в плоскую координатную сетку. В рамках этой модели:
карта делится на квадратные тайлы размером 256×256 пикселей;
каждый тайл идентифицируется координатами (x, y, z), где:
при увеличении zoom-уровня количество тайлов увеличивается экспоненциально;
каждый следующий уровень увеличивает детализацию в 2 раза по каждой оси.
На уровне API тайловые источники инкапсулируются в провайдеры, которые отвечают за получение, кэширование и преобразование данных в формат, пригодный для рендеринга.
В HERE Maps API провайдер тайлов выступает промежуточным слоем между картографическим сервисом и визуальным слоем карты. Его задача — предоставить движку карты унифицированный интерфейс доступа к данным независимо от их типа:
Провайдеры реализуют единый контракт: по координатам тайла вернуть ресурс, пригодный для отображения.
Растровый провайдер работает с готовыми изображениями, формируемыми на сервере HERE или сторонним сервисом.
Растровый тайл представляет собой PNG или JPEG изображение, заранее отрисованное сервером:
const platform = new H.service.Platform({
apikey: 'YOUR_API_KEY'
});
const maptypes = platform.createDefaultLayers();
const map = new H.Map(
document.getElementById('map'),
maptypes.raster.normal.map,
{
center: { lat: 52.5200, lng: 13.4050 },
zoom: 10
}
);
Растровый провайдер применяется там, где важна стабильность и предсказуемый визуальный результат.
Векторные тайлы содержат не изображение, а структурированные геометрические данные:
Рендеринг выполняется на стороне клиента с использованием WebGL.
Процесс получения и отображения векторного тайла включает этапы:
const platform = new H.service.Platform({
apikey: 'YOUR_API_KEY'
});
const vectorLayer = platform.createDefaultLayers().vector.normal.map;
const map = new H.Map(
document.getElementById('map'),
vectorLayer,
{
center: { lat: 48.8566, lng: 2.3522 },
zoom: 12
}
);
Пользовательские провайдеры позволяют интегрировать внешние или собственные источники тайлов. Это ключевой механизм расширения системы картографии.
HERE Maps API позволяет реализовать собственный источник через
H.map.provider.TileProvider.
class CustomTileProvider extends H.map.provider.TileProvider {
constructor(options) {
super(options);
}
loadTile(x, y, z, onSuccess, onError) {
const url = `https://example.com/tiles/${z}/${x}/${y}.png`;
fetch(url)
.then(response => response.blob())
.then(blob => {
const img = document.createElement('img');
img.src = URL.createObjectURL(blob);
onSuccess(img);
})
.catch(onError);
}
}
const provider = new CustomTileProvider({
tileSize: 256
});
const layer = new H.map.layer.TileLayer(provider);
const map = new H.Map(
document.getElementById('map'),
layer,
{
center: { lat: 40.7128, lng: -74.0060 },
zoom: 11
}
);
Эффективность работы провайдеров во многом определяется стратегией кэширования.
Каждый провайдер опирается на стандартизированную систему индексации.
На уровне zoom z:
Преобразование координат:
При работе с несколькими слоями применяется система наложения:
Приоритет определяется порядком добавления слоев в карту.
map.addLayer(trafficLayer);
map.addLayer(customHeatmapLayer);
Система позволяет переключать источники данных без пересоздания карты.
map.setBaseLayer(maptypes.vector.reduced.day);
Или замена на пользовательский слой:
map.setBaseLayer(customLayer);
Ключевые факторы производительности:
Оптимизация достигается балансом между детализацией и объемом данных.
Доступ к тайловым сервисам HERE Maps API контролируется через API key:
| Тип провайдера | Формат данных | Производительность | Гибкость | Сценарии |
|---|---|---|---|---|
| Raster | PNG/JPEG | высокая | низкая | базовые карты |
| Vector | protobuf | средняя/высокая | высокая | кастомные стили |
| Custom | любой | зависит от реализации | максимальная | специализированные данные |
Рендерер HERE Maps API выполняет роль потребителя тайлов:
Связь между провайдером и рендерером строго асинхронная, что обеспечивает плавность интерфейса даже при медленных сетевых соединениях.