Плагин карты не показывает поставщиков услуг
Я пытаюсь сделать пустой Map
в QML 5.7, чтобы нарисовать геолокированные полилинии. Однако нет доступных плагинов для предоставления картографических данных:
Map {
anchors.fill:parent
plugin: Plugin {
name: "osm"
Component.onCompleted: console.log('a',availableServiceProviders.length)
}
MapPolyline {
line.color: "#299FE7"; line.width: 3
path: parent.points
}
Timer {
running:true; interval:1000
onTriggered: console.log('b',parent.supportedMapTypes.length)
}
}
Вышеуказанные выводы:
qml: a 0
qml: b 0
Почему у меня нет доступных плагинов, и как я могу заставить их работать?
1 ответ
У вас нет поставщика по умолчанию, потому что Qt не навязывает использование определенного. Еще больше теперь, когда все доступные из них требуют регистрации (и принятия соглашения /ToS), чтобы использовать их услуги.
Список доступных плагинов можно найти здесь. Перейдя по ссылкам, вы можете прочитать о конкретных настройках использования каждого из них.
Добавление провайдера в QML - это всего лишь вопрос объявления Plugin
типа, что-то вроде этого:
Plugin {
name: <provider_name> // { "here" | "mapbox" | "osm" }
PluginParameter { name: <param_name>; value: <param_value> }
// other parameters
}
Та же самая задача может быть выполнена в проекте C++/non-QML через QGeoServiceProvider
учебный класс.
Имейте в виду, что доступ к MapQuest изменился несколько месяцев назад, сломав плагин Open Street Map. Теперь вам нужны учетные данные для доступа к их сервису, например, прочитайте этот комментарий. Соответствующий патч был добавлен и объединен, как указано на странице отчета об ошибках последнего связанного комментария, и будет доступен в выпуске патча Qt 5.6.2 (и Qt 5.7.1).