如何用颤动罗盘找到方向?
How to find direction with flutter compass?
有没有办法用Flutter罗盘找到特定的方向。该罗盘是否指示特定的经纬度坐标?
这是我在我的应用程序中用来获取偏移量的 Qibla 罗盘的标准代码:
double getOffsetFromNorth(double currentLatitude, double currentLongitude,
double targetLatitude, double targetLongitude) {
var la_rad = radians(currentLatitude);
var lo_rad = radians(currentLongitude);
var de_la = radians(targetLatitude);
var de_lo = radians(targetLongitude);
var toDegrees = degrees(atan(sin(de_lo - lo_rad) /
((cos(la_rad) * tan(de_la)) - (sin(la_rad) * cos(de_lo - lo_rad)))));
if (la_rad > de_la) {
if ((lo_rad > de_lo || lo_rad < radians(-180.0) + de_lo) &&
toDegrees > 0.0 &&
toDegrees <= 90.0) {
toDegrees += 180.0;
} else if (lo_rad <= de_lo &&
lo_rad >= radians(-180.0) + de_lo &&
toDegrees > -90.0 &&
toDegrees < 0.0) {
toDegrees += 180.0;
}
}
if (la_rad < de_la) {
if ((lo_rad > de_lo || lo_rad < radians(-180.0) + de_lo) &&
toDegrees > 0.0 &&
toDegrees < 90.0) {
toDegrees += 180.0;
}
if (lo_rad <= de_lo &&
lo_rad >= radians(-180.0) + de_lo &&
toDegrees > -90.0 &&
toDegrees <= 0.0) {
toDegrees += 180.0;
}
}
return toDegrees;
}
然后将偏移量添加到 flutter_compass 旋转以获得每个偏移量
传感器更新并将结果应用于特殊 header.
有没有办法用Flutter罗盘找到特定的方向。该罗盘是否指示特定的经纬度坐标?
这是我在我的应用程序中用来获取偏移量的 Qibla 罗盘的标准代码:
double getOffsetFromNorth(double currentLatitude, double currentLongitude,
double targetLatitude, double targetLongitude) {
var la_rad = radians(currentLatitude);
var lo_rad = radians(currentLongitude);
var de_la = radians(targetLatitude);
var de_lo = radians(targetLongitude);
var toDegrees = degrees(atan(sin(de_lo - lo_rad) /
((cos(la_rad) * tan(de_la)) - (sin(la_rad) * cos(de_lo - lo_rad)))));
if (la_rad > de_la) {
if ((lo_rad > de_lo || lo_rad < radians(-180.0) + de_lo) &&
toDegrees > 0.0 &&
toDegrees <= 90.0) {
toDegrees += 180.0;
} else if (lo_rad <= de_lo &&
lo_rad >= radians(-180.0) + de_lo &&
toDegrees > -90.0 &&
toDegrees < 0.0) {
toDegrees += 180.0;
}
}
if (la_rad < de_la) {
if ((lo_rad > de_lo || lo_rad < radians(-180.0) + de_lo) &&
toDegrees > 0.0 &&
toDegrees < 90.0) {
toDegrees += 180.0;
}
if (lo_rad <= de_lo &&
lo_rad >= radians(-180.0) + de_lo &&
toDegrees > -90.0 &&
toDegrees <= 0.0) {
toDegrees += 180.0;
}
}
return toDegrees;
}
然后将偏移量添加到 flutter_compass 旋转以获得每个偏移量 传感器更新并将结果应用于特殊 header.