我正在尝试创建一个显示附近学校的应用程序。我正在获取一个json并从当前位置提取地址和英里,但是该列表没有按最小英里数进行排序。
我尝试按照此线程sorting the items in the flatList中列出的步骤进行操作,但是我的平面列表未按距离顺序排序。
这是我获取json的方式:
componentDidMount() {
return fetch('json api')
.then(response => response.json())
.then(responseJson => {
this.setState({
dataSource: responseJson.schools,
isLoading: false,
});
})
.catch(error => {
console.error(error);
});
}
这是我的单位列表(lat1和lon1来自json,现在我很难对纬度和经度进行编码,直到我弄清楚如何插入当前位置):
return (
<View style={styles.container}>
<FlatList
data={this.state.dataSource.sort((a,b) => {
const aDist = getDistance({
latitude: +a.lat1,
longitude: +a.lon1
}, {
latitude: 50,
longitude: -50,
})
const bDist = getDistance({
latitude: +b. lat1,
longitude: +b.lon1
}, {
latitude: 50,
longitude: -50
})
return aDist - bDist;
})}
ItemSeparatorComponent={this.FlatListItemSeparator}
renderItem={this._renderItem}
keyExtractor={(item, index) => index.toString()}
/>
</View>
);
所有信息正确显示,但顺序不正确。我到底在做什么错?