Плагин карты не показывает поставщиков услуг

Я пытаюсь сделать пустой 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).

Другие вопросы по тегам