有没有办法在 React Native 中加快地图和当前位置的加载速度?

如何解决有没有办法在 React Native 中加快地图和当前位置的加载速度?

我在 Stack Manager 中有 4 个地图屏幕,可让我的用户在完成任务时查看他们的当前位置。在他们完成一项任务后,它会将他们发送到下一个地图屏幕,直到该任务完成。有时从一个地图屏幕到另一个屏幕会有大量的延迟(10 秒)。当应用重新加载它们的当前位置时,我已经实现了一个 ActivityIndi​​cator,它会一直运行到函数挂载为止。然后,当他们导航离开时,该函数将卸载并触发下一页加载当前位置的安装,然后重复。有没有办法加快这个过程并使地图加载速度更快?

编辑:到目前为止,我已经关闭了 trackViewChanges。我目前使用的是图标,而不是我的自定义标记的图像。我尝试在开发模式下运行,看看它是否会运行得更快(根据一些报告说它会),但它并没有影响它的渲染能力。

编辑 2:这是我用来生成用户当前位置的一些代码。

function Screen({navigation}) { 
    const [user_latitude,setUserLatitude] = useState(0)
    const [user_longitude,setUserLongitude] = useState(0)
    const [position_error,setPositionError] = useState(null)
    const [ isLoading,setIsLoading ] = useState(true)
    const [ location,setLocation ] = useState(null);

  const renderLoading = () =>  {
        if (isLoading) {
            return (
            <View style = {{flex:1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#d3d3d3',height: height*0.75,width: width}}>
            <ActivityIndicator
            color = 'black'
            size = 'large'
            animated = {false}
          />
          <Text style = { styles.text }>{i18n.t('')}</Text>
          </View>
            );
        }else {
            return null;
        }
    }

useFocusEffect( 
      React.useCallback(()=> {

      let isActive = true;

      const fetchGeoPosition = () => {
        navigator.geolocation.getCurrentPosition(
        position => { 
          if (isActive){
          setUserLatitude(position.coords.latitude);
          setUserLongitude(position.coords.longitude);
          setPositionError(null);
          console.log('Location Accessed')
        } 
        setIsLoading(false)

      },error => isActive && setPositionError(error.message),{enableHighAccuracy: true,timeout: 0,maximumAge: 1000} 
      ); 
    }
    const permission_get = async () => {
      if (Platform.OS === 'android' && !Constants.isDevice) {
        setErrorMsg(
          'Oops,this will not work on Snack in an Android emulator. Try it on your device!'
        );
        return;
      }
      let { status } = await Location.requestPermissionsAsync();
      if (status !== 'granted') {
        setErrorMsg('Permission to access location was denied');
        console.log('Not permitted')
        return;
      }

      let location = await Location.getCurrentPositionAsync({});
      setLocation(location);
      console.log('Permitted')
    }

    permission_get()
    fetchGeoPosition()

      return () =>{
        isActive = false
        console.log('Location Severed')
    }


        },[],),)



  if (!exercise.trim()){
    return;
  }
  Alert.alert(
    (i18n.t('')),(i18n.t('')),[
    {
      text: (i18n.t('')),onPress: () => navigation.navigate('Screen2')
    },{
      text: (i18n.t('')),}]
    )
}


  return(
      <View style = {styles.container}>

      <View style = {styles.header}>
       <MapView
        provider={PROVIDER_GOOGLE}
        style={styles.map}
        region= {{
        latitude: user_latitude,longitude: user_longitude,latitudeDelta: 0.0451,longitudeDelta: 0.0451
      }}>
      
        <Marker 
        coordinate={ 

          {latitude: user_latitude,error: position_error,}}
         
        >
        </Marker>
      </MapView>

      <View style = { styles.blank }>
      
      <View style = {{flex:1,backgroundColor: '#fff' }}>
      {(renderLoading())}
      </View>

    </View>
    </View> 
      </View> 
  )
}

export {Screen};

const {height}= Dimensions.get("screen");
const { width } = Dimensions.get("screen")


const styles = StyleSheet.create({
 container: {
      flex: 1,flexDirection: 'column',backgroundColor: '#fff',},});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com(将#修改为@)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?