Документация
ОС Аврора 1.0.0

Ответы на часто задаваемые вопросы по Mfw

Содержание:

Не загружаются онлайн карты

Необходимо проверить соединение с интернетом.

Не отображаются карты, но соединение установлено

Такое может происходить по нескольким причинам. Например:

  • неправильно настроенный адрес, порт или другие параметры карт;
  • несоответствие формату (mbtiles, pbf, mvt).

Для диагностики необходимо посмотреть лог обмена данными.

Для его получения нужно установить в файле свойство у MfwMap:

urlDebug: true

Если запустить приложение, то в консоли будут выводиться URL-адреса, к которым идёт обращение. Смотреть необходимо либо в выводе приложения при запуске через IDE, либо подключиться по ssh к устройству и написать:

devel-su journalctl -f

Как подключиться к устройству по ssh:

  1. Включить Режим разработчика в настройках устройства (Настройки -> Средства разработчика) и там же включить удалённое соединение.

  2. Задать пароль для подключения по ssh.

  3. Задать IP-адрес устройства, которое будет подключено по usb к хосту.

  4. Подсоединить устройство по usb и при подключении нажать Режим разработчика. Если такой опции нет, то проверить шаг 1.

  5. Подключиться к устройству при помощи команды:

    ssh defaultuser@<ip адрес устройства>
    

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

MapboxGL requested URL: https://api.mapbox.com/styles/v1/mapbox/streets-v10?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7.json?access_token=<token>&secure
MapboxGL requested URL: https://api.mapbox.com/styles/v1/mapbox/streets-v10/sprite.json?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/styles/v1/mapbox/streets-v10/sprite.png?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/8/154/80.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/8/154/79.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2476/1280.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2475/1280.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2476/1279.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2475/1279.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2476/1281.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2475/1281.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2477/1280.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2474/1280.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2477/1279.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2477/1281.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2474/1279.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2474/1281.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2478/1280.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2473/1280.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2478/1279.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2478/1281.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2473/1279.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/12/2473/1281.vector.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Medium%2cArial%20Unicode%20MS%20Regular/1024-1279.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Medium%2cArial%20Unicode%20MS%20Regular/8192-8447.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Medium%2cArial%20Unicode%20MS%20Regular/0-255.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/1024-1279.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/0-255.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Bold%2cArial%20Unicode%20MS%20Bold/1024-1279.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Bold%2cArial%20Unicode%20MS%20Bold/0-255.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/8192-8447.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/fonts/v1/mapbox/DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/8448-8703.pbf?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7.json?access_token=<token>&secure
MapboxGL requested URL: https://api.mapbox.com/styles/v1/mapbox/streets-v10/sprite.json?access_token=<token>
MapboxGL requested URL: https://api.mapbox.com/styles/v1/mapbox/streets-v10/sprite.png?access_token=<token>

где <token> — токен для доступа к контенту сервиса, предоставляющий информацию по картам

Список дополнительных параметров:

  • accessToken — токен для доступа к данным на некоторых серверов, которые дают доступ к тайлам.
  • apiBaseUrl — базовый url, от которого формируются все запросы для тайлов.
  • apiKey — ключ доступа для API.
  • styleUrl — url для получения стиля.

Может возникнуть ситуация, когда стиль не был получен. В таком случае необходимо проверить свойство styleUrl в MfwMap.

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

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

  • http://,
  • https:,
  • mapbox://<Tileset ID>.

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

Как добавить свой протокол?

Необходимо воспроизвести следующие шаги:

  1. Добавить флаг в класс MfwMapPrivate:

    bool isCustomMaps = false;
    
  2. Создать для него соответствующее qml-свойство в заголовочном файле класса MfwMap:

    Q_PROPERTY(bool isCustomMaps READ isCustomMaps WRITE setIsCustomMaps NOTIFY isCustomMapsChanged)
    bool isCustomMaps() const;
    void setIsCustomMaps(bool isCustomMaps);
    void isCustomMapsChanged(bool isCustomMaps);
    

    А также добавить их определение:

    bool MfwMap::isCustomMaps() const
    {
        Q_D(const MfwMap);
        return d->isCustomMaps;
    }
    
    void MfwMap::setIsCustomMaps(bool isCustomMaps)
    {
        Q_D(MfwMap);
        d->isCustomMaps = isCustomMaps;
        emit isCustomMapsChanged(d->isCustomMaps);
    }
    
  3. Изменить определение метода MfwMapPrivate::resourceTransform, чтобы запрос менялся на поддерживаемый в maplibre. Ниже приведён пример для протокола mmr:// от VKMaps:

    std::string MfwMapPrivate::resourceTransform(const std::string &url)
    {
        QMutexLocker lk(&resourceTransformMutex);    
        std::string newUrl = url + urlSuffix;
    
        if (urlDebug) {
            std::cout << "MapboxGL requested URL: " << newUrl << std::endl;
        }
    
        if (isCustomMaps) {
            const QString urlQstring = QString::fromUtf8(url.c_str());
            QString newUrlQstring = QString::fromUtf8(newUrl.c_str());
    
            const QLatin1String vkScheme("mmr://");
            const QLatin1String vkSchemeReplacement("https://maps.vk.com/");
            const QLatin1String vkTilesScheme("mmr://tiles/");
            const QLatin1String vkTilesSchemeReplacement("https://tiles.maps.vk.com/");
            QLatin1String schemeReplacement(vkSchemeReplacement);
    
            if (urlQstring.startsWith(vkTilesScheme)) {
                schemeReplacement = vkTilesSchemeReplacement;
            }
    
            newUrlQstring.replace(vkScheme, schemeReplacement);
    
            if (urlDebug) {
                std::cout << "MY_LOG: newUrlQstring: " << newUrlQstring.toStdString() << std::endl;
            }
    
            return newUrlQstring.toStdString();
        }
    
        return newUrl;
    }
    

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

Пожалуйста ознакомьтесь с политикой использования cookies.