Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
手机在android中的当前位置_Android_React Native - Fatal编程技术网

手机在android中的当前位置

手机在android中的当前位置,android,react-native,Android,React Native,他们的任何付费或免费应用程序都可以告诉我手机当前位置的经度和纬度。我在当前react本地代码中使用GeoDist,但无法在android上获得手机的确切当前位置。如果有人能给我推荐一个付费或免费的密码来获取手机的当前位置,我将不胜感激。下面是我的代码,它没有给我正确的计算: componentDidMount() { navigator.geolocation.getCurrentPosition( (position) => { this.setSta

他们的任何付费或免费应用程序都可以告诉我手机当前位置的经度和纬度。我在当前react本地代码中使用GeoDist,但无法在android上获得手机的确切当前位置。如果有人能给我推荐一个付费或免费的密码来获取手机的当前位置,我将不胜感激。下面是我的代码,它没有给我正确的计算:

componentDidMount() {
    navigator.geolocation.getCurrentPosition(
      (position) => {
        this.setState({
          latitude: position.coords.latitude,
          longitude: position.coords.longitude,
          error: null,
        });
      },
      (error) => this.setState({ error: error.message }),
      { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 },
    );
  }

 var geodist = require('geodist')
    var sLat= this.state.latitude;
    var sLong =  this.state.longitude;

    var dist = geodist({lat: sLat, lon: sLong}, {lat: item.LatL, lon: item.Long2}, 'mi'
)

谢谢。

有一个名为的图书馆。我在以前的项目中使用过这个库。你所要做的就是

  • 安装软件包
  • 链接包
  • 声明清单权限
  • 。。。
    ...
    ...            
    
    然后可以开始使用定义的方法

    示例

    。。。
    从“react native fused location”导入FusedLocation;
    ...
    异步组件didmount(){
    授予的常数=等待许可和ROID.request(
    PERMISSIONS和roid.PERMISSIONS.ACCESS\u FINE\u位置{
    标题:“应用程序需要访问您的位置”,
    消息:“应用程序需要访问您的位置”+
    “所以我们可以让我们的应用程序更棒。”
    }
    );
    如果(授予){
    FusedLocation.setLocationPriority(FusedLocation.Constants.HIGH_准确性);
    //一次定位。
    const location=await FusedLocation.getFusedLocation();
    this.setState({lat:location.lation,long:location.longitude});
    //设置选项。
    FusedLocation.setLocationPriority(FusedLocation.Constants.BALANCED);
    FusedLocation.setLocationInterval(20000);
    FusedLocation.SetFastTestLocationInterval(15000);
    熔合位置。设置最小位移(10);
    //不断更新位置。
    FusedLocation.startLocationUpdates();
    //放置听众。
    this.subscription=FusedLocation.on('FusedLocation',location=>{
    /*位置={
    纬度:14.2323,
    经度:-2.2323,
    速度:0,
    海拔:0,
    标题:10,
    提供者:'融合',
    准确度:30,
    方位:0,,
    嘲笑:错,
    时间戳:“1513190221416”
    }
    */
    控制台日志(位置);
    });
    /*可选的
    this.errSubscription=FusedLocation.on('fusedLocationError',error=>{
    控制台。警告(错误);
    });
    */
    }
    ...
    组件将卸载(){
    FusedLocation.off(此.subscription);
    //FusedLocation.off(this.errSubscription);
    FusedLocation.stopLocationUpdates();
    }  
    ...
    
    通过查看您的代码,我想建议您对代码进行一些更改:

    如果需要,请使用parseFloat()获取纬度和经度 想要精确的位置,因为float将始终为您提供精确的位置 价值观

    在AndroidManifest.xml中提供这些权限

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
    此中的状态作为

    initialPosition: {
       latitude: 0,
       longitude: 0,
       latitudeDelta: 0,
       longitudeDelta: 0,
     },
    
    在componentDidMount()中执行此操作


    然后,您可以在地图视图中使用此初始位置状态。

    Google Maps?只需在地图上的位置上放置红色pin,然后展开屏幕底部的框以显示坐标。@Anjali您正在使用react native Maps library吗?让我试试。我会告诉您的。谢谢。就这样。@Anjali很高兴我能提供帮助。
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    
    const { width, height } = Dimensions.get('window');
    const ASPECT_RATIO = width / height
    const LATITUDE_DELTA = 0.0922
    const LONGITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO
    
    initialPosition: {
       latitude: 0,
       longitude: 0,
       latitudeDelta: 0,
       longitudeDelta: 0,
     },
    
     componentDidMount() {
    navigator.geolocation.getCurrentPosition((position) => {
      var lat = parseFloat(position.coords.latitude)
      var long = parseFloat(position.coords.longitude)
    
      var initialRegion = {
        latitude: lat,
        longitude: long,
        latitudeDelta: LATITUDE_DELTA,
        longitudeDelta: LONGITUDE_DELTA,
      }
    
      this.setState({initialPosition: initialRegion})
    
    },
    (error) => alert(JSON.stringify(error)),
    {enableHighAccuracy: true, timeout: 20000,});
    }