Qt QML Проблема с вращением MapItem
У меня есть карта QML OSM и MapQuickItem с текстовым исходным элементом:
MapQuickItem {
property alias rulerRotationAngle: rulerRotation.angle
id: rulerTextMapItem
visible: false
width: 2
height: 2
transform: Rotation {
id: rulerRotation
origin.x: rulerText.width/2;
origin.y: rulerText.height/2;
angle: 0
}
anchorPoint.x: rulerText.width/2
anchorPoint.y: rulerText.height/2
z:5
sourceItem: Text {
id: rulerText; horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
color: Material.color(Material.Amber, Material.Shade100)
text: "0.0 km";
}
}
У меня также есть две точки (QtPositioning.coordinate), и я хочу, чтобы текст вращался в зависимости от угла прямой линии (MapPolyLine), проведенной между этими точками:
function drawRuler()
{
rulerLine.path = [];
rulerLine.addCoordinate(r_firstpoint);
rulerLine.addCoordinate(r_secondpoint);
rulerTextMapItem.visible = true;
rulerTextMapItem.coordinate = QtPositioning.coordinate((r_firstpoint.latitude+r_secondpoint.latitude)/2, (r_firstpoint.longitude+r_secondpoint.longitude)/2);
var atan = Math.atan2(r_secondpoint.longitude-r_firstpoint.longitude, r_secondpoint.latitude-r_firstpoint.latitude);
var angle = ((atan*180)/Math.PI); //used by another MapItem
var textAngle = angle+270;
if(textAngle>90 & textAngle<270) { textAngle+=180 }
if(angle>90 & angle<270) { angle +=180 }
rulerTextMapItem.rulerRotationAngle = textAngle;
}
Однако текст правильно поворачивается только под углами, кратными 90 градусам. Под углом 45 градусов текст отклоняется от полилинии карты примерно на 10-20 градусов. Я понятия не имею, почему это происходит, и ценю любую помощь.
Пробовал двигать transform.origin MapQuickItem - разница в углах только увеличивается. Пробовал использовать Math.Atan вместо Math.Atan2 - без разницы.