我正在使用MapQuickItem
作为Image
的sourceItem
,以显示用户在QML Map
上的位置。
MapQuickItem
的文档指出:
设置的坐标将与坐标的左上角对齐 屏幕上显示时包含的项目。
anchorPoint
属性提供了一种将 与项目的其他部分协调,而不仅仅是左上角 角落,通过设置像素数可以使项目偏移。一种简单的思考方法是注意 项目本身上的
anchorPoint
是可以对齐的点 显示时带有给定的coordinate
。
因此,我将锚点设置为与图像的中心相匹配,如下所示:
anchorPoint.x: img.width/2
anchorPoint.y: img.height/2
这会将箭头的中心放在用户位置的上方。到目前为止一切顺利。
现在,我希望使用rotation
属性将图像绕其中心旋转以显示用户的标题。
Item
transformOrigin
属性的文档指出:
九个变换原点可用,如下图所示。的 默认变换原点为
Item.Center
。
因此,我希望图像围绕其中心旋转,因为这是默认行为。
但是不幸的是,现实却大不相同。围绕图像的左上角进行旋转,将箭头从用户的位置移开,如下图所示:
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
main.qml
import QtQuick 2.0
import QtQuick.Window 2.0
import QtLocation 5.6
import QtPositioning 5.6
Window {
width: 512
height: 512
visible: true
property variant loc: QtPositioning.coordinate(48.858222, 2.2945)
Map {
id: map
anchors.fill: parent
plugin: Plugin { name: "osm" }
center: loc
zoomLevel: 16
MapQuickItem {
id: arrow
coordinate: loc
anchorPoint.x: img.width/2
anchorPoint.y: img.height/2
sourceItem: Image {
id: img
NumberAnimation on rotation { from: 0; to: 360; duration: 2000; loops: Animation.Infinite; }
source: "arrow.png"
}
}
}
}
arrow.png :https://pasteboard.co/HYgV7Nf.png
答案 0 :(得分:2)
文档是正确的,问题是如何应用任务的顺序,您要做的是先旋转图像,然后您只需建立使用左上角作为参考点的MapQuickItem源,因此它将始终相对于topLeft旋转。
解决方案是旋转MapQuickItem而不是sourceItem:
import pandas as pd
import os
file_path = 'path/to/files/'
file_names = os.listdir(file_path)
dataframes = []
# Import DataFrames.
for file_name in file_names:
dataframes.append(pd.read_csv(file_path + file_name, sep='|', index_col=0))
df_avg = sum(dataframes) / len(dataframes)