Требования к браузерам и устройствам

Библиотека HERE Maps API работает на основе современных веб-технологий и активно использует возможности браузера для отображения карт, выполнения рендеринга, обработки пользовательских событий, анимации и работы с сетевыми запросами. Корректная работа картографических приложений напрямую зависит от поддержки браузером необходимых стандартов JavaScript, HTML5, CSS3, WebGL и сетевых API.

При проектировании веб-приложений с использованием HERE Maps важно учитывать разнообразие пользовательских устройств: настольные компьютеры, ноутбуки, планшеты, смартфоны и специализированные терминалы. Каждая категория оборудования имеет собственные ограничения производительности, особенностей ввода и поддержки графических технологий.


Поддерживаемые браузеры

HERE Maps API ориентирован на современные браузеры, регулярно получающие обновления безопасности и реализации веб-стандартов.

Наиболее распространённые поддерживаемые браузеры:

  • Google Chrome
  • Mozilla Firefox
  • Microsoft Edge
  • Apple Safari
  • Chromium-браузеры

Поддержка современных версий браузеров обеспечивает:

  • аппаратное ускорение графики;
  • корректную работу WebGL;
  • поддержку ES6+ JavaScript;
  • быструю обработку сетевых запросов;
  • работу адаптивных интерфейсов.

Пример проверки браузера:

console.log(navigator.userAgent);

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


Подход Feature Detection вместо Browser Detection

Определение браузера по User-Agent считается устаревшим подходом.

Нежелательный вариант:

if (navigator.userAgent.includes("Chrome")) {
    console.log("Chrome detected");
}

Рекомендуемый вариант:

if ("geolocation" in navigator) {
    console.log("Geolocation supported");
}

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


Поддержка JavaScript

Современные версии HERE Maps используют возможности стандарта ECMAScript.

Наиболее часто используемые функции:

  • стрелочные функции;
  • классы;
  • модули;
  • промисы;
  • async/await;
  • шаблонные строки;
  • коллекции Map и Set.

Пример:

const loadMapData = async () => {
    const response = await fetch("/data");
    return response.json();
};

При необходимости поддержки устаревших браузеров применяется транспиляция через Babel.

Пример настройки:

npm install @babel/core @babel/preset-env

Роль WebGL в HERE Maps

Современные карты HERE активно используют WebGL для аппаратного рендеринга.

Преимущества WebGL:

  • высокая скорость отрисовки;
  • плавное масштабирование;
  • отображение большого количества объектов;
  • трёхмерная визуализация;
  • эффективная работа с векторными картами.

Проверка поддержки WebGL:

function hasWebGL() {
    const canvas = document.createElement("canvas");

    return !!(
        window.WebGLRenderingContext &&
        (
            canvas.getContext("webgl") ||
            canvas.getContext("experimental-webgl")
        )
    );
}

console.log(hasWebGL());

Если WebGL недоступен, возможно снижение производительности или ограничение части функциональности.


Аппаратное ускорение графики

Для достижения максимальной производительности браузер должен использовать GPU устройства.

Факторы, влияющие на производительность:

  • модель видеокарты;
  • объём видеопамяти;
  • драйверы;
  • настройки браузера;
  • энергосберегающие режимы устройства.

Особенно заметно влияние GPU при работе с:

  • тысячами маркеров;
  • кластеризацией объектов;
  • динамическими слоями;
  • 3D-картами;
  • сложными маршрутами.

Поддержка мобильных браузеров

HERE Maps полностью адаптирован для мобильных устройств.

Основные мобильные платформы:

  • Android;
  • iOS;
  • HarmonyOS;
  • другие системы на базе современных браузерных движков.

На мобильных устройствах поддерживаются:

  • касания одним пальцем;
  • масштабирование жестом Pinch-to-Zoom;
  • вращение карты;
  • инерционная прокрутка;
  • работа с геолокацией.

Создание карты выглядит одинаково для настольных и мобильных браузеров:

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
);

Сенсорный ввод

Мобильные устройства используют Touch Events и Pointer Events.

Для обработки взаимодействий применяется объект поведения карты:

const beh * avior = new H.mapevents.Behavior(
    new H.mapevents.MapEvents(map)
);

Он автоматически обеспечивает поддержку:

  • перетаскивания;
  • масштабирования;
  • вращения;
  • мультитач-жестов.

Геолокация устройства

Многие картографические приложения используют текущее местоположение пользователя.

Проверка доступности геолокации:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(
        position => {
            console.log(position.coords.latitude);
            console.log(position.coords.longitude);
        }
    );
}

Для работы геолокации необходимы:

  • HTTPS-соединение;
  • разрешение пользователя;
  • поддержка функции браузером.

HTTPS как обязательное требование

Современные браузеры ограничивают доступ к ряду API при использовании небезопасного протокола HTTP.

Функции, требующие HTTPS:

  • геолокация;
  • сервисные работники;
  • push-уведомления;
  • некоторые возможности хранения данных;
  • отдельные браузерные API безопасности.

Пример корректного адреса:

https://example.com

Использование HTTPS является обязательным условием для производственных картографических систем.


Поддержка экранов высокого разрешения

Устройства с высокой плотностью пикселей требуют корректной масштабируемости интерфейса.

Примеры таких устройств:

  • Retina MacBook;
  • iPhone;
  • iPad;
  • современные Android-смартфоны;
  • 4K-мониторы.

Получение коэффициента масштабирования:

console.log(window.devicePixelRatio);

Высокое значение позволяет отображать:

  • более чёткие карты;
  • качественные иконки;
  • детализированные подписи;
  • плавные векторные объекты.

Адаптация под различные размеры экранов

Контейнер карты должен корректно изменять размеры.

Пример HTML:

<div id="map"></div>

Пример CSS:

#map {
    width: 100%;
    height: 100vh;
}

При изменении размеров окна требуется обновлять область отображения:

window.addEventListener("resize", () => {
    map.getViewPort().resize();
});

Это особенно важно для:

  • планшетов;
  • складных смартфонов;
  • изменения ориентации устройства;
  • адаптивных интерфейсов.

Поддержка ориентации экрана

На мобильных устройствах возможно переключение между портретным и альбомным режимами.

Обработка изменения ориентации:

window.addEventListener("orientationchange", () => {
    map.getViewPort().resize();
});

После изменения ориентации карта автоматически занимает доступную область экрана.


Ограничения старых браузеров

Устаревшие браузеры могут не поддерживать:

  • ES6;
  • WebGL;
  • современные CSS-возможности;
  • Fetch API;
  • Promise;
  • Pointer Events.

Пример проверки Promise:

if (window.Promise) {
    console.log("Supported");
}

При необходимости используются полифилы:

<script src="polyfill.js"></script>

Однако поддержка очень старых браузеров часто приводит к увеличению объёма приложения и снижению производительности.


Производительность на слабых устройствах

Мобильные устройства начального уровня обладают ограниченными ресурсами.

На скорость работы карт влияют:

  • объём оперативной памяти;
  • частота процессора;
  • производительность графического ускорителя;
  • количество открытых вкладок браузера.

Для повышения производительности рекомендуется:

  • уменьшать число одновременно отображаемых объектов;
  • использовать кластеризацию маркеров;
  • удалять неиспользуемые слои;
  • избегать тяжёлых анимаций;
  • минимизировать объём загружаемых данных.

Работа при нестабильном интернет-соединении

Картографические приложения постоянно взаимодействуют с сетевыми сервисами.

Необходимо учитывать:

  • низкую скорость соединения;
  • потерю пакетов;
  • временное отсутствие доступа к сети;
  • ограничения мобильного трафика.

Проверка состояния сети:

window.addEventListener("online", () => {
    console.log("Connection restored");
});

window.addEventListener("offline", () => {
    console.log("Connection lost");
});

Корректная обработка сетевых ошибок повышает устойчивость приложения на мобильных устройствах.


Проверка поддержки необходимых возможностей

Перед инициализацией карты полезно выполнять комплексную диагностику среды выполнения.

Пример:

const compatibility = {
    webgl: hasWebGL(),
    geolocation: "geolocation" in navigator,
    fetch: "fetch" in window,
    promise: "Promise" in window
};

console.table(compatibility);

Такой подход позволяет заранее определить возможные ограничения платформы и адаптировать функциональность приложения под конкретный браузер и устройство.


Основные требования для комфортной работы HERE Maps API

Минимальный набор возможностей современного клиента включает:

  • поддержку JavaScript ES6+;
  • наличие WebGL;
  • поддержку Fetch API;
  • поддержку Promise;
  • аппаратное ускорение графики;
  • современный браузер с регулярными обновлениями;
  • HTTPS-соединение;
  • достаточный объём оперативной памяти;
  • стабильный доступ к сети Интернет.

Соблюдение данных требований обеспечивает корректную работу карт, высокую производительность интерфейса и доступность всех основных возможностей HERE Maps API на настольных и мобильных устройствах.