Как установить свойство path для MapPolyline

464
28 ноября 2016, 18:35

Продолжение этого вопроса. Никак не могу задать в path MapPolyLine динамически формирующиеся данные.

Модель:

QVariant TracksModel::data(const QModelIndex & index, int role) const {
    //Если пришел запрос на массив, то досрочно его отдаем
    if (role == PointsRole)
    {
        return tracks[index.row()];
    }
    /*...*/
}
// Метод для получения имен ролей через хешированную таблицу.
QHash<int, QByteArray> TracksModel::roleNames() const {
    /* То есть сохраняем в хеш-таблицу названия ролей
     * по их номеру
     * */
    QHash<int, QByteArray> roles;
    roles[IdRole] = "id";
    roles[NameRole] = "name";
    roles[PointsRole] = "points";
    return roles;
}
// Метод обновления таблицы в модели представления данных
void TracksModel::updateModel()
{
    // Обновление производится SQL-запросом к базе данных
    this->tracks = this->getPointsOfTracks(); // и здесь обновляется список с точками каждого трека
    QString str_query("SELECT id, name FROM Tracks;");
    this->setQuery(str_query);
    qDebug() << str_query << endl;
    qDebug() << this->tracks[0][0] << endl;
}
QVector<QVariantList> TracksModel::getPointsOfTracks()
{
    QVector<QVariantList> temp_tracks;
    for (int i = 0; i <= 3; i++) // обрабатываем каждый трек
    {
       QVariantList path;
//       for(int j = 0; j <= 10; j++) // ззаполняем массив с точками одного трека
//       {
           // для примера хардкорно задаем две точки для каждого отображаемого трека
           QVariantMap point;
           point["latitude"] = QVariant(55.928848 + (0.000680 * i));
           point["longtitude"] = QVariant(37.519537 + (0.002200 * i));
           path.append(point);
           QVariantMap point2;
           point2["latitude"] = QVariant(55.928169 + (0.000680 * i));
           point2["longtitude"] = QVariant(37.521683 + (0.002200 * i));
           path.append(point2);
       //}
       temp_tracks.push_back(path);
       // Сохраняем трек в список
    }
    return temp_tracks;
}

Попробовал разместить на карту точку(с помощью этой модели) и посмотреть что же выведется при клике:

 MapItemView {
    id: tracksLine
    model: tracksModel
    delegate: MapQuickItem {
        coordinate {
            latitude: 55.92862
            longitude: 37.520932
        }
        sourceItem: Image {
            source: "qrc:///img/pikachu.png"
        }
        MouseArea{
            anchors.fill: parent;
            onClicked: {
                if( mouse.button == Qt.LeftButton){
                    var s = [
                            { latitude: 50, longitude: 50},
                            { latitude: 50, longitude: 50},
                            { latitude: 50, longitude: 50},
                            { latitude: 50, longitude: 50}
                        ]
                    console.log(s);
                    console.log(points);
                }
            }
        }
    }
}

Я получаю

qml: [[object Object],[object Object],[object Object],[object Object]] qml: [[object Object],[object Object]]

Т.е. одно и тоже, но при установке path

MapItemView{
    id: tracksLines
    model: tracksModel
    delegate:
        MapPolyline {
        line.width: 3
        line.color: 'red'
        path: points
    }
}

получаю "QML MapPolyline: Unsupported path type". Как мне наконец скормить данные MapPolyLine?

Если кому интересно разобраться https://github.com/yashart/neva_project/tree/NewModel Все происходит в map/MapComponent.qml. Модель которая за все отвечает расположена в database/tracksmodel.*

READ ALSO
regex замена символа

regex замена символа

Привет всемпытаюсь с помощью распарсить строку

365
Шрифт Symbol и браузер Vivaldi

Шрифт Symbol и браузер Vivaldi

Есть html, сконвертированный из MS Word и там используется шрифт SymbolПочему-то этот шрифт не работает в Vivaldi

511
Java WebDriver нажатие на input

Java WebDriver нажатие на input

всем привет, как мне имитировать нажатие на эту кнопку ?

437
Как подключить шрифт ProximaNova?

Как подключить шрифт ProximaNova?

Как подключить шрифт ProximaNova?

1124