Search code examples
androidreact-nativegeolocationandroid-emulator

React Native : react-native-geolocation


I need to fetching location in react-native. I used @react-native-community/geolocation. When getCurrentPosition we have option enableHighAccuracy.

My problem is when I run my app in android emulator it must change to enableHighAccuracy: true.

But when I run on device it not working and must be change to enableHighAccuracy : false

This is example of my code :

const callLocation = () => {
    setLoading(true);
    Geolocation.getCurrentPosition(position => {
      const { longitude, latitude } = position.coords
      setLoading(false);
      setRegion({ ...region, latitude, longitude });
    },
      error => console.log(error.message),
      { 
        timeout: 20000, 
        enableHighAccuracy: true, // must change to false when run on device
        maximumAge: 1000 },
    );
  }

Maybe you have the same problem with me, I appreciate a lot about your help.


Solution

  • Finally I solved this problem with storing enableHighAccuracy to state, so whenever the value for instance false is not working I update the value to true and vice versa.

    
    const [enableHighAccuracy, setEnableHighAccuracy] = useState(true); // my state
    
    const callLocation = () => {
        setLoading(true);
        Geolocation.getCurrentPosition(position => {
          const { longitude, latitude } = position.coords
          setLoading(false);
          setRegion({ ...region, latitude, longitude });
        },
          error => {
           setEnableHighAccuracy(!enableHighAccuracy); // change when error
           console.log(error.message)
          },
          { 
            timeout: 20000, 
            enableHighAccuracy, // apply the state to this
            maximumAge: 1000 },
        );
      }