ШАГ 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));
См. этот вопрос для получения дополнительной информации о сортировке.
Вопрос: Привет, спасибо как мне вернуть это в список и как получить документ из 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