如何使用Matchmore js SDK使React Native应用程序检测当前位置?

时间:2019-04-15 10:27:50

标签: location react-native-android

我正在使用js SDK在我的React Native应用程序中实现matchmore。

允许访问我的位置。 当显示 localPersistenceManager 时,我发现该位置为空并显示为

location: { latitude: 0, longitude: 0, altitude: 0 }

整个结果是这样的

{ _devices: 
       [ { name: 'Nexus_5X_API_28',
           location: { latitude: 0, longitude: 0, altitude: 0 },
           deviceType: 'MobileDevice',
           id: '20f4a1d9-6c55-49d2-aa7c-5278eec6ccc6',
           createdAt: 1555321201061,
           platform: 'android',
           deviceToken: 'Nexus_5X_API_28_device_token_is_unique' } ],
      _publications: [],
      _subscriptions: [],
      _defaultDevice: 
       { name: 'Nexus_5X_API_28',
         location: { latitude: 0, longitude: 0, altitude: 0 },
         deviceType: 'MobileDevice',
         id: '20f4a1d9-6c55-49d2-aa7c-5278eec6ccc6',
         createdAt: 1555321201061,
         platform: 'android',
         deviceToken: 'Nexus_5X_API_28_device_token_is_unique' } }

如何使应用程序检测正确的位置?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以通过更新Matchmore管理器来手动设置设备位置:

navigator.geolocation.getCurrentPosition(
            position => {
              const location = JSON.stringify(position);
              console.log(location)
              this.setState({ location });
              if (this.manager){
                  this.manager.updateLocation({
                    latitude: position.coords.latitude,
                    longitude: position.coords.longitude,
                    altitude: 0
                  })
              }
            },
            error => Alert.alert(error.message),
            { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
          );

完成后,在设备上创建的发布和订阅将具有您当前的位置。