Я реализую экран AR с помощью arcore_flutter_plugin и использовал формулу для расчета моего текущего местоположения и местоположения соответствующей точки для отображения узла, но когда я использовал библиотеку геолокатора, значение заголовка было установлено на 0,0 на по умолчанию, поэтому я получил направление камеры через библиотеку compassX.
Даже если я вычисляю направление, используя радианы для значения, рассчитанного на основе широты и долготы, узел не появляется в точном месте, и есть разница .
void _addSphere(ArCoreController controller) {
double? poss = _lastRead?.heading;
List targetLongitudepol = [];
List targetLatitudepol = [];
double? currentLongitude = position?.longitude;
double? currentLatitude = position?.latitude;
for(int i=0; i < targetLongitudepol.length; i++) {
double? deltaLongitude = targetLongitudepol - currentLongitude!;
double? deltaLatitude = targetLatitudepol - currentLatitude!;
double xDistance = longitudeToMeters(deltaLongitude, currentLatitude);
double yDistance = latitudeToMeters(deltaLatitude);
double headingRadians = poss * (pi / 180);
double adjustedX = (xDistance * cos(headingRadians)) - (yDistance * sin(headingRadians));
double adjustedZ = (xDistance * sin(headingRadians)) + (yDistance * cos(headingRadians));
final materialpol = ArCoreMaterial(
color: Colors.red,
);
final spherepol = ArCoreSphere(
materials: [materialpol],
radius: 0.5,
);
sphereNode = ArCoreNode(
name: "123",
shape: spherepol,
position: vector.Vector3(adjustedX, -1.0, adjustedZ),
scale: vector.Vector3(1.0,1.0,1.0),
);
arCoreController?.addArCoreNode(sphereNode!);
}
}
Future deviceCompass() async {
_lastRead = await CompassX.events!.first;
return _lastRead;
}
double latitudeToMeters(double deltaLatitude) {
return deltaLatitude * 111574;
}
double longitudeToMeters(double deltaLongitude, double latitude) {
double metersPerDegree = 111574 * cos(latitude * (pi / 180));
double longitudeInMeters = deltaLongitude * metersPerDegree;
return longitudeInMeters;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... -direction