在React-Native

时间:2019-07-08 00:29:56

标签: react-native

我正在尝试创建一个显示附近学校的应用程序。我正在获取一个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>
    );

所有信息正确显示,但顺序不正确。我到底在做什么错?

0 个答案:

没有答案