gpt4 book ai didi

firebase - 如何在 ListView 抖动中获得用户之间的距离?

转载 作者:行者123 更新时间:2023-12-03 04:43:02 25 4
gpt4 key购买 nike

我有一个Firestore集合,其中的文档字段之一包含用户的位置(地理点),我想构建一个listview,其中当前用户与所有其他用户之间的距离按升序排列。我如何获得 flutter 朔迷离?
看起来像这个/image/yXfME.png
更新
如何从列表中的文档获取位置?

最佳答案

步骤1:以公里为单位获取当前用户与当前列表项的距离

var distanceInKms = GetDistance(latitude1, longitude1, latitude2, longitude2);


double GetDistance(double lat1, double lon1, double lat2, double lon2)
{

var p = 0.017453292519943295;
var c = cos;
var a = 0.5 - c((lat2 - lat1) * p)/2 +
c(lat1 * p) * c(lat2 * p) *
(1 - c((lon2 - lon1) * p))/2;
return 12742 * asin(sqrt(a));

}

步骤2:将这些值添加到列表项对象。然后根据此字段对列表进行排序。
myList.sort((a,b) => a.distance.compareTo(b.distance));

请参阅 this question以获取有关排序的更多信息。
问题:嗨,谢谢,我如何在列表 View 中返回它,又如何从 list 中的Firestore获取文档?
回答:
QuerySnapshot snapshot = await Firestore.instance.collection("YOUR_COLLECTION_NAME").getDocuments();

List<items> myList = [];

snapshot.documents.forEach((doc) {
//Convert incoming JSON info to object of your type and add to list
myList.add(List.fromJSON(doc.data));
});

//Apply logic on myList for sorting based on location

关于firebase - 如何在 ListView 抖动中获得用户之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62815673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com