如何在虚幻引擎内部使用GPS坐标来识别位置

时间:2019-05-28 15:29:37

标签: c++ gps unreal-engine4

我想在虚幻引擎4中使用GPS坐标。 用例是我想在操作系统上以米为单位给出到目标的距离,以显示通知。

我试图通过getDistanceBeweenGps将浮点数传递到我的蓝图逻辑中。 但是,每次我在Android设备上运行该数字时,该数字就会变为0.0f。

输入示例:

lat1 = 1.0f;
long1 = 1.0f;
lat2 = 1000.0f;
long2 = 1000.0f;

预期结果:

> 0.0f

代码:

#include "GpsUtils.h"
#include <math.h>
#define d2r (PI / 180.0)
//UGpsUtils::UGpsUtils(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
//{
//
//}

float UGpsUtils::getDistanceBeweenGps(float lat1, float long1, float lat2, float long2){
    return (float) haversine_km(lat1, long1, lat2, long2);
}


//calculate haversine distance for linear distance
double UGpsUtils::haversine_km(double lat1, double long1, double lat2, double long2)
{
    double dlong = (long2 - long1) * d2r;
    double dlat = (lat2 - lat1) * d2r;
    double a = pow(sin(dlat / 2.0), 2) + cos(lat1*d2r) * cos(lat2*d2r) * pow(sin(dlong / 2.0), 2);
    double c = 2 * atan2(sqrt(a), sqrt(1 - a));
    double d = 6367 * c;

    return d;
}

double UGpsUtils::haversine_mi(double lat1, double long1, double lat2, double long2)
{
    double dlong = (long2 - long1) * d2r;
    double dlat = (lat2 - lat1) * d2r;
    double a = pow(sin(dlat / 2.0), 2) + cos(lat1*d2r) * cos(lat2*d2r) * pow(sin(dlong / 2.0), 2);
    double c = 2 * atan2(sqrt(a), sqrt(1 - a));
    double d = 3956 * c;

    return d;
}

没有错误,我真的看不出来是什么原因。

part1 of blueprint

part2 of blueprint

1 个答案:

答案 0 :(得分:1)

GpsUtils变量未正确设置。 当我终于在开发机上启动它并读取日志文件时找到了它。 因此,未来的一个好方法是找到一种方法来查看客户端(android)=)的日志文件,祝您生活愉快

Fixed the blueprint