首页 > 解决方案 > Geolib 和 getPreciseLocation 通过数组

问题描述

我有一个数组,我需要按特定点的距离对其数据进行排序。因为我正在处理坐标,所以知道这.sort()不起作用,我一直在使用一个名为 Geolib 的库,它有一个名为的函数getPreciseLocation(),这正是我需要的,但在遍历数组时它似乎不起作用。这是包含我将使用的数据的数组。

数据:

[
    {
        "id": "1",
        "Point": "27.1597268, 40.6646601"
    },
    {
        "id": "2",
        "Point": "11.1640393, 49.648713"
    },
    {
        "id": "3",
        "Point": "26.1539253, 42.6599287"
    },
    {
        "id": "4",
        "Point": "21.1597268, 44.6646601"
    },
    {
        "id": "5",
        "Point": "10.1640393, 43.648713"
    },
    {
        "id": "6",
        "Point": "26.1539253, 61.6599287"
    }
]

我一直试图用来遍历数组的代码。

let DistancesFromUserLocation = [];
this.state.Data.forEach(item => {
    DistancesFromUserLocation.push(geolib.getPreciseDistance({latitude: 30.1891168, longitude: 11.6226982}, item.Point))
})

作为免责声明:我只需要接收每个数组对象到新数组的距离。我已经尝试并研究了很多东西并绕过了解决方案,但只是认为我正在解决问题,但会出现问题。

标签: javascriptarraysreact-nativegeolocation

解决方案


您需要将每次迭代生成的距离DistancesFromUserLocation送到数组。

let DistancesFromUserLocation = [];
this.state.Data.forEach(item => {
    // push each distance to `DistancesFromUserLocation`
    DistancesFromUserLocation.push(
       geolib.getPreciseDistance(
           {latitude: 30.1891168, longitude: 11.6226982},
           item.Point
       );
    )
})

只有这样,您才能使用Array.sort().

console.log(DistancesFromUserLocation.sort());

编辑:在codesandbox查看我的工作示例。


推荐阅读