如何使用geolocation.getCurrentPosition和&geolocation.watchPosition

时间:2019-03-08 13:57:16

标签: react-native-android

我尝试在用户移动0.1米时获得坐标。但是,即使我不动,它也会给我日志,而且它们的值也不相同。例如;

这是第一个值:

  

lat2:38.4420875
  lng2:27.1441123

这是第二个值:

  

lat2:38.4420843
  lng2:27.1441643

这是我的代码:

ComponentDidMounth() {

navigator.geolocation.getCurrentPosition(
    (position) => {
      this.setState({ initialPosition: position });
      Latitude = position.coords.latitude;
                    Longitude = position.coords.longitude;

                    var lat = parseFloat(position.coords.latitude);
                     var lng = parseFloat(position.coords.longitude);

                           console.log("lat :",lat);
                           console.log("lng :",lng);
    },
    (error) => alert(JSON.stringify(error)),
    {enableHighAccuracy: false, timeout: 20000, maximumAge: 1111000, distanceFilter: 0.1}
);

this.watchID = navigator.geolocation.watchPosition((lastPosition) => {

    this.setState({ initialPosition: lastPosition });

    Latitude = lastPosition.coords.latitude;
    Longitude = lastPosition.coords.longitude;

     var lat = parseFloat(lastPosition.coords.latitude);
     var lng = parseFloat(lastPosition.coords.longitude);

           console.log("lat2 :",lat);
           console.log("lng2 :",lng);

},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: false, timeout: 20000, maximumAge: 11111111, distanceFilter: 0.1});
}

我在哪里做错了?

编辑部分:

import Geolocation from 'react-native-geolocation-service';

this.watchID = Geolocation.watchPosition((lastPosition) => {

    this.setState({ initialPosition: lastPosition });

    Latitude = lastPosition.coords.latitude;
    Longitude = lastPosition.coords.longitude;

     var lat = parseFloat(lastPosition.coords.latitude);
     var lng = parseFloat(lastPosition.coords.longitude);

           console.log("lat2 :",lat);
           console.log("lng2 :",lng);

},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 20000, maximumAge: 250, distanceFilter: 1});

“已编辑部分”中的此代码每10秒为我提供一次位置。当我移动1米时,我添加了distanceFilter给我位置。但这总是让我每10或15秒一次。我在哪里弄错了?

1 个答案:

答案 0 :(得分:0)

您可以通过设置enableHighAccuracy: true来启用高精度,但是由于Official docs指出navigator.geolocation在Android中准确性较低,因为它使用Framework GeoLocation API,而使用Google Location Service API Google和React Native均建议使用,因为它可以提高电池效率和准确性。