如何使用 React-native 根据距离制作过滤器

Posted

技术标签:

【中文标题】如何使用 React-native 根据距离制作过滤器【英文标题】:How can I make a filter based in the distance with React-native 【发布时间】:2021-11-22 08:53:52 【问题描述】:

我需要为我的应用程序创建一个距离过滤器,例如从用户城市获取用户,例如在火种距离半径中,我该怎么做? 这是我现在拥有的页面代码

getUsers = async() => 
    try
        const response = await api.get('/auth/list')

        const  users  = response.data
        console.log(users)

        this.setState( users )
    catch(response)
        this.setState( errorMessage: response.data.error )
        console.log(response.data.error)
     
  


 async componentDidMount()
  this.getUsers()
 

 render() 
   return(
     <View>
       !!this.state.errorMessage && <Text> this.state.errorMessage </Text>
       this.state.users.filter(user => user.speciality === 'Dermatologista').map(user => (
          <View key=user._id style=marginTop: 15, alignItems: 'center'>
            <Text style=fontWeight: 'bold', fontSize:20>user.title</Text>
            <Text>user.speciality</Text>
            <Button   title = 'View Profile'onPress =() => this.props.navigation.navigate('Profile', 
               name: user._id
               
            )/>
            </View>
        ))
     </View>
   )
 

我怎么也可以做一个距离过滤器?,我已经有了当前位置和其他用户的位置

【问题讨论】:

只要找到当前用户与其他用户的位置差异,并将其存储在数组或对象中。然后对数组进行排序以获得所需的过滤器。您可以使用this 作为参考。 谢谢你,伙计,你帮了很多忙,早上好 【参考方案1】:

答案很简单,您只需要创建一个区域数组并执行以下操作

这将获取用户位置

 navigator.geolocation.getCurrentPosition(
        (coords: latitude, longitude) => 
          this.setState(region: latitude, longitude,latitudeDelta:0.0, 
 longitudeDelta:0.005,)
        , //sucesso
        () => , //erro
        
          timeout: 2000,
          enableHighAccuracy: true,
          maximumAge: 1000,
        
      )
    
    
    render()
      const users = this.state.users
      console.log(users)

这里是过滤器

      return(
        <View style=styles.container>
          <ScrollView>
          !!this.state.errorMessage && <text>this.state.errorMessage</text>
          this.state.users.filter(user => user.speciality === 'Hospital' && 
           user.latitude > this.state.region.latitude - .2 &&
           user.latitude < this.state.region.latitude + .2 && user.longitude > 
            this.state.region.longitude -.2 &&
           user.longitude < this.state.region.longitude + .2
           ).map(user => (
              <View key=user._id style=marginTop: 15, alignItems: 
               'center'>
                <Text style=fontWeight: 'bold', fontSize:20>user.title 
                </Text>
                <Text>user.speciality</Text>
                <Button   title = 'View Profile'onPress =() => 
                this.props.navigation.navigate('Profile', 
                   name: user._id
                   
                )/>
                </View>
            ))
          </ScrollView>
         
    
        </View>
      )
    
      
    
    

【讨论】:

以上是关于如何使用 React-native 根据距离制作过滤器的主要内容,如果未能解决你的问题,请参考以下文章

使用 React-Native 制作多行扩展 TextInput

如何制作需要特定导入的混合包 React/React-Native

React Native:如何使用 expo 在 webview 中制作全屏 youtube 嵌入视频(没有 react-native 链接)

react-native 如何在子组件中获取父组件背景颜色

在 React-Native 中制作指南针

如何通过公交获得覆盖距离