我一直在玩React Native,让自定义位置工作并设置" NSLocationWhenInUseUsageDescription"键。在ios模拟器上运行时,错误是:
{
"code": 2,
"message": "Unable to retrieve location.",
"PERMISSION_DENIED": 1,
"POSITION_UNAVAILABLE": 2,
"TIMEOUT": 3
}
这就是我所拥有的,几乎直接来自Geolocation示例页面https://facebook.github.io/react-native/docs/geolocation.html
/* eslint no-console: 0 */
'use strict';
var React = require('react');
var ReactNative = require('react-native');
var {
StyleSheet,
Text,
View,
} = ReactNative;
export default class GeolocationExample extends React.Component {
state = {
initialPosition: 'unknown'
};
componentDidMount() {
navigator.geolocation.getCurrentPosition(
(position) => {
var initialPosition = JSON.stringify(position);
this.setState({initialPosition});
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);
}
render() {
return (
<View>
<Text>
<Text style={styles.title}>Initial position: </Text>
{this.state.initialPosition}
</Text>
</View>
);
}
}
var styles = StyleSheet.create({
title: {
fontWeight: '500',
},
});
任何帮助将不胜感激!
答案 0 :(得分:7)
您需要在模拟器中设置位置。在此问题中描述的模拟器菜单中有一个选项: Set the location in iPhone Simulator
答案 1 :(得分:5)
答案 2 :(得分:3)
正如Santosh建议的那样,您需要在iOS模拟器中设置位置:Debug&gt;位置。
请记住,即使您在模拟器中设置了位置,也会不时出现“PERMISSION_DENIED”错误。如果发生这种情况,您需要选择不同的预定义位置,然后错误就会消失。
答案 3 :(得分:1)
为Santosh的答案添加了更新,请注意,在我当前的模拟器版本(11.4)中,可以在以下位置找到设置位置的选项:
功能->位置
(将其发布为新答案,因为我尚未被评论)。
答案 4 :(得分:0)
我在真实设备上进行测试,但出现相同的错误。 我刚刚重新启动设备,它开始工作。仍然遇到问题的任何人都可以尝试一下。
答案 5 :(得分:0)
因此,对于那些仍在物理设备中寻找答案的人
如果您正在使用
<input id="startstopbutton" class="buttonZ" style="width: 120px;" type="button" name="btn" id='btn' value="Start" onclick="startstop();">
<input id="resetbutton" class="buttonZ" style="width: 120px;" type="button" name="btnRst1" id='btnRst1' value="Reset" onclick="time();" />
<div id="clock" class="timerClock" value="00:00:00">00:00:00</div>
<br>
<textarea id="output" spellcheck="false" readonly></textarea>
然后
import Geolocation from '@react-native-community/geolocation';
如果您不处理错误,则会引发错误或使您的应用崩溃。
答案 6 :(得分:0)