Ответы на часто задаваемые вопросы по Mfw
Содержание:
- Не загружаются онлайн карты
- Не отображаются карты, но соединение установлено
- Как добавить свой протокол?
Не загружаются онлайн карты
Необходимо проверить соединение с интернетом.
Не отображаются карты, но соединение установлено
Такое может происходить по нескольким причинам. Например:
- неправильно настроенный адрес, порт или другие параметры карт;
- несоответствие формату (mbtiles, pbf, mvt).
Для диагностики необходимо посмотреть лог обмена данными.
Для его получения нужно установить в файле свойство у MfwMap:
urlDebug: true
Если запустить приложение, то в консоли будут выводиться URL-адреса, к которым идёт обращение. Смотреть необходимо либо в выводе приложения при запуске через IDE, либо подключиться по ssh к устройству и написать:
devel-su journalctl -f
Как подключиться к устройству по ssh:
-
Включить Режим разработчика в настройках устройства (Настройки -> Средства разработчика) и там же включить удалённое соединение.
-
Задать пароль для подключения по ssh.
-
Задать IP-адрес устройства, которое будет подключено по usb к хосту.
-
Подсоединить устройство по usb и при подключении нажать Режим разработчика. Если такой опции нет, то проверить шаг 1.
-
Подключиться к устройству при помощи команды:
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>
.
Другие протоколы на данный момент не поддерживаются.
Как добавить свой протокол?
Необходимо воспроизвести следующие шаги:
-
Добавить флаг в класс
MfwMapPrivate
:bool isCustomMaps = false;
-
Создать для него соответствующее 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); }
-
Изменить определение метода
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; }