Как правильно добавить geojson из c++ в qml?

Для того чтобы добавить GeoJSON в QML из C++, можно использовать QGeoJsonDocument и QGeoJsonSeries в сочетании с Qt's Location API. Вот шаги описывающие процесс:

Шаг 1: Загрузка и разбор GeoJSON файла
Сначала необходимо загрузить GeoJSON файл и разобрать его с помощью QJsonDocument и QJsonObject. Предположим, что у вас уже есть существующий код для загрузки файла и сохранения его содержимого в QString. Вот код, который показывает, как это можно сделать:

QString geoJsonData = ... // Загрузите содержимое файла GeoJSON в QString
QJsonDocument geoJsonDoc = QJsonDocument::fromJson(geoJsonData.toUtf8());
QJsonObject geoJsonObj = geoJsonDoc.object();

Шаг 2: Создание QGeoJsonDocument и QGeoJsonSeries
Затем необходимо создать экземпляр QGeoJsonDocument и QGeoJsonSeries, чтобы адаптировать данные GeoJSON для использования в QML. Вот как это можно сделать:

QGeoJsonDocument geoJsonDocument;
geoJsonDocument.setJsonObject(geoJsonObj);

QGeoJsonSeries *geoJsonSeries = new QGeoJsonSeries;
geoJsonSeries->setGeoJson(geoJsonDocument);

Шаг 3: Добавление QGeoJsonSeries в QML
Далее необходимо добавить QGeoJsonSeries в контекст QML и затем использовать его в интерфейсе пользователя. Вот как это можно сделать:

QQmlContext *context = engine.rootContext();
context->setContextProperty("geoJsonSeries", geoJsonSeries);

Затем в вашем файле QML вы можете использовать geoJsonSeries в соответствующих элементах интерфейса пользователя, например, добавить его в Map:

import QtLocation 5.12
import QtPositioning 5.12

Map {
    ...
    
    plugin: Plugin {
        name: "osm" // Используйте имя соответствующего плагина карты
    }
    
    MapItemView {
        model: geoJsonSeries.features
        delegate: MapPolygon {
            path: JSON.createObjectFromUrl(model.source)
        }
    }
}

Шаг 4: Загрузка и запуск QML
Наконец, вы должны загрузить и запустить ваш файл QML. Ниже приведена примерная последовательность действий:

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

Информация из GeoJSON файла будет отображаться на карте в соответствии с вашими настройками отображения в QML.

Надеюсь, что этот ответ поможет вам добавить GeoJSON из C++ в QML при использовании Qt и Qt's Location API. Если у вас есть дополнительные вопросы, пожалуйста, не стесняйтесь задавать.