PhoneGap Build 6.3.0 IOS上的地理位置getCurrentPosition速度较慢



我是PhoneGap Build开发的新手。在测试一些基本的应用程序功能时,我在Iphone 6/IOS 10/PhoneGap Build 6.3.0上进行简单的地理定位请求时遇到了超时问题。

重新安装应用程序后,我启动它并通过onclick->geolocation()启动地理定位。

只有当我将应用程序转到后台时,我才会收到允许定位请求的IOS请求(当我第一次在前台执行onclick->geolocation时应该会收到)。

有时我会在很长一段时间后得到地理定位结果,有时不会。我已经在三个PositionOptions上尝试了所有可能的组合。

当我询问谷歌地图应用程序时,它会立即显示我的位置。

知道我做错了什么吗?

谢谢你,金

function do_geolocation(){
	alert('do geoloc');
	navigator.geolocation.getCurrentPosition(geo_onSuccess, geo_onError, {maximumAge:120000, enableHighAccuracy:false} );
}
onclick=do_geolocation();
function geo_onSuccess(position){
	alert('Latitude: '          + position.coords.latitude          + 'n' +
'Longitude: '         + position.coords.longitude         + 'n' +
'Altitude: '          + position.coords.altitude          + 'n' +
'Accuracy: '          + position.coords.accuracy          + 'n' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + 'n' +
'Heading: '           + position.coords.heading           + 'n' +
'Speed: '             + position.coords.speed             + 'n' +
'Timestamp: '         + position.timestamp                + 'n');
	var arr = new Array();
	arr['lat'] = position.coords.latitude;
	arr['lng'] = position.coords.longitude;
	var x = new Date();var cb = x.getTime();
	
}
function geo_onError(position){
	
	 alert('code: '+error.code+'nmessage: '+error.message+'n');
	return false;
}

<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns   = "http://www.w3.org/ns/widgets"
xmlns:gap   = "http://phonegap.com/ns/1.0"
id          = "de.vvvvvv.secapp"
versionCode = "10"
version     = "1.0.0" >
<!-- versionCode is optional and Android only -->
<name>vvvvvvv</name>
<description>
vvvvvvvvvvvv
</description>
<author href="http://vvvvvvv.de" email="info@vvvvvv.de">
Kim
</author>
<plugin name="cordova-plugin-geolocation" spec="2.4.1" />
<plugin name="cordova-plugin-whitelist" spec="1.3.1" />
<access origin="*"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
<preference name="orientation" value="portrait" />
<!-- https://makeappicon.com/ios10icon -->
<icon src="res/icons/ios/Icon-App-20x20@2x.png" platform="ios" width="20" height="20" />
<icon src="res/icons/ios/Icon-App-20x20@3x.png" platform="ios" width="40" height="40" />
...

只有当我将应用程序转到后台时,我才会收到允许定位请求的IOS请求(当我第一次在前台执行onclick->geolocation时应该会收到)。

仅在应用程序后台激活听起来像是Content-Security-Policy问题(这里是另一个例子)。

要解决此问题,请确保Content-Security-Policy元标记包含default-srcgap://readyfile:条目。例如:

<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file:; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src * 'unsafe-inline' 'unsafe-eval'">

有时我会在很长一段时间后得到地理定位结果,有时不会。我已经在三个PositionOptions上尝试了所有可能的组合。

maximumAge设置为120000意味着可以使用最长2分钟的位置(由操作系统缓存)。要强制新位置,请将其设置为零:

{
enableHighAccuracy: false
maximumAge: 0,
timeout: 2000
}

如果将enableHighAccuracy设置为true,则GPS硬件将锁定,因此设置足够的超时以锁定足够的卫星:

{
enableHighAccuracy: true
maximumAge: 0,
timeout: 30000
}

有关PositionOptions的完整解释,请参阅Mozilla文档

最新更新