По заданию необходимо отобразить карту на экране и рисовать на ней линии. Пробую сделать вот так:
main.cpp
#include <QGeoPath>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QTimer>
class PathController: public QObject{
Q_OBJECT
Q_PROPERTY(QGeoPath geopath READ geoPath WRITE setGeoPath NOTIFY geopathChanged)
public:
PathController(QObject *parent = 0) : QObject(parent) {}
QGeoPath geoPath() const {
return mGeoPath;
}
void setGeoPath(const QGeoPath &geoPath) {
if(geoPath != mGeoPath) {
mGeoPath = geoPath;
emit geopathChanged();
}
}
signals:
void geopathChanged();
private:
QGeoPath mGeoPath;
};
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QGeoPath path;
path.addCoordinate(QGeoCoordinate(55.006355, 92.860984));
path.addCoordinate(QGeoCoordinate(55.1, 93));
path.addCoordinate(QGeoCoordinate(56.1, 92.777));
PathController controller;
controller.setGeoPath(path);
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("pathController", &controller);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
#include "main.moc"
main.qml
import QtQuick 2.9
import QtQuick.Window 2.2
import QtLocation 5.6
import QtPositioning 5.6
Window {
visible: true
width: 640
height: 480
Plugin {
id: osmMapPlugin
name: "osm"
}
Map {
anchors.fill: parent
plugin: osmMapPlugin
center: QtPositioning.coordinate(56.006355, 92.860984)
zoomLevel: 10
MapPolyline {
id: pl
line.width: 3
line.color: 'red'
}
}
Connections{
target: pathController
onGeopathChanged: {
var lines = []
for(var i=0; i < pathController.geopath.size(); i++){
lines[i] = pathController.geopath.coordinateAt(i)
}
pl.path = lines
}
}
}
Однако получаю пустую карту. Линии не появляются. Вопрос - каким образом отрендеривать линии? Они ведь существуют, просто как бы "невидимы".
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть класс автобусЕсть после destination (маршрут который проходит) petrol (количество бензина потраченного)
Почему происходит переполнение стека, если осуществлять цикл посредством for(), хотя с циклом do-while компиляция выполняется корректно?