我有一个包含5400个文档的集合。我在足球比赛中保留了1名球员的数据。每一秒我从玩家那里得到长和拉特。现在我想要游戏中玩家的总距离。
有些想法?
这是一个文件的例子:
{
"_id" : ObjectId("59807a01702661033d918e8e"),
"playerId" : 1,
"timestamp" : ISODate("2017-08-01T11:11:45.078Z")
"loc" : {
"type" : "Point",
"coordinates" : [
4.94193,
51.32447
]
}
}
答案 0 :(得分:0)
您可以获取播放器的所有点,计算它们之间的距离,并将距离加起来。 对于距离计算,你可以使用这个算法(使用php,希望它没关系)
class Geo
{
const R = 6371000;
/**
* @param float[] $point1 latitude and longitude
* @param float[] $point2 latitude and longitude
* @return float
*/
static public function calculateDistance($point1, $point2)
{
$latRad1 = deg2rad($point1[0]);
$latRad2 = deg2rad($point2[0]);
$deltaLat = deg2rad($point2[0] - $point1[0]);
$deltaLon = deg2rad($point2[1] - $point1[1]);
$a = sin($deltaLat/2) * sin($deltaLat/2) +
cos($latRad1) * cos($latRad2) *
sin($deltaLon/2) * sin($deltaLon/2);
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
return self::R * $c;
}
}
希望它有用。