我似乎无法让navigator.geolocation
工作。它进入错误函数,错误代码为3,错误消息“位置请求超时”我的代码在下面做错了什么?
import { AppRegistry } from 'react-native'
import { App } from './src'
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
var crd = pos.coords;
console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
}
function error(err) {
console.warn(`ERROR(${err.code}): ${err.message}`);
}
navigator.geolocation.getCurrentPosition(success, error, options);
GLOBAL.XMLHttpRequest = GLOBAL.originalXMLHttpRequest || GLOBAL.XMLHttpRequest
console.error = (error) => error.apply
AppRegistry.registerComponent('vepo', () => App)
这是本机特别是Android的已知位置错误。不要发送第三个参数(选项一)并查看是否有效。
如果与highAccuracy和maximumAge有关
另一种方法是使用Mozilla提供的HTML和JS代码:https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/getCurrentPosition#Specifications第一次尝试时工作...调用是HTML,代码是JS。
这是HTML代码:
<p><button onclick="geoFindMe()">Show my location</button></p>
<div id="out"></div>
这是JS代码:
function geoFindMe() {
var output = document.getElementById("out");
if (!navigator.geolocation){
output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
return;
}
function success(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>';
var img = new Image();
img.src = "https://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false";
output.appendChild(img);
}
function error() {
output.innerHTML = "Unable to retrieve your location";
}
output.innerHTML = "<p>Locating…</p>";
navigator.geolocation.getCurrentPosition(success, error);
}
注意:此代码直接来自Mozilla(下面的链接 - 请参阅“地理定位实例”:
https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API
你应该在navigator.geolocation.getCurrentPosition
或函数调用中请求componentDidMount
:
componentDidMount() {
navigator.geolocation.getCurrentPosition(success, error, options);
}
componentDidMount(){
navigator.geolocation.getCurrentPosition(
(position) => {
console.log(position)
})
}
这项工作对我来说,请记住在Android中添加权限