我目前有两个列表,第一个列表获得了只包含lat/lon地理坐标的有序元素,这些是传递路线上的路径点,必须按照这个顺序保持。第二个得到嵌套列表,其中包含位置的字符串地址作为元素,对应的lat/lon作为元素1。
list1 = [-22.7481495,-43.440236,-22.7532378,-43.4541717,-22.9976583,-43.3581268,-22.8795337,-43.3373482]
list2 =[样本地址A,-22.9976583,-43.3581268,样本地址B,-22.7481495,-43.440236,样本地址C,-22.7532378,-43.4541717,样本地址D,-22.8795337,-43.3373482]
我需要根据我在第一份订单中的订单来订购第二份清单。仅举一个简单的例子,list2应该等于示例地址B,-22.7481495,-43.440236
发布于 2022-06-15 20:14:28
这应该是你要找的:
void main() {
var list1 = [
[-22.7481495, -43.440236],
[-22.7532378, -43.4541717],
[-22.9976583, -43.3581268],
[-22.8795337, -43.3373482],
];
var list2 = [
["SAMPLE ADDRESS A", -22.9976583, -43.3581268],
["SAMPLE ADDRESS B", -22.7481495, -43.440236],
["SAMPLE ADDRESS C", -22.7532378, -43.4541717],
["SAMPLE ADDRESS D", -22.8795337, -43.3373482],
];
list2.sort((l1, l2) {
return list1.indexWhere((el) { return el[0] == l1[1] && el[1] == l1[2];}) -
list1.indexWhere((el) { return el[0] == l2[1] && el[1] == l2[2]; });
}
);
print(list2);
}我们使用排序方法(https://api.flutter.dev/flutter/dart-core/List/sort.html)对列表进行排序,传递一个比较每个元素位于list1中的索引的Comparator。
另请参阅:
https://stackoverflow.com/questions/72636659
复制相似问题