gpt4 book ai didi

android - Phonegap 地理定位不适用于 Android(Nexus 设备)

转载 作者:太空狗 更新时间:2023-10-29 14:57:51 24 4
gpt4 key购买 nike

我知道以前有人问过这个问题,但我已经尝试了所有建议的解决方案,但似乎没有任何效果!

我正在开发一个使用 Phonegap(+Angular,但我认为这不重要)构建的移动应用程序。在此应用程序中,我使用的是地理定位插件。更具体地说,我的 config.xml 如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "......"
version = "1.0.0" >

<name>.....</name>

<preference name="permissions" value="none"/>

<preference name="orientation" value="default" />
<preference name="target-device" value="universal" />
<preference name="phonegap-version" value="3.6.3" />

<gap:plugin name="org.apache.cordova.geolocation" />
<gap:plugin name="com.phonegap.plugins.PushPlugin" version="2.4.0" />
<gap:plugin name="org.apache.cordova.network-information" />
<gap:plugin name="org.apache.cordova.statusbar" />
<gap:plugin name="org.apache.cordova.device" />
<gap:plugin name="org.transistorsoft.cordova.background-geolocation"/>
</widget>

有时候我想获取用户的当前位置,所以我是这样做的:

navigator.geolocation.getCurrentPosition(function (position) {
.....
}, function (error) {}, {
enableHighAccuracy: true,
maximumAge: 30000,
timeout: 10000
});

这在 iOS 设备上运行良好,甚至在 Android 的 ripple 模拟器上运行。

但是当我尝试在 Android 上运行该应用程序时,更具体地说是在 Nexus 4 和 5 上,地理定位似乎不起作用。这并不是说它给我一个错误,它只是试图在没有任何运气的情况下检索位置。

但是,所有其他使用地理定位的应用程序以及浏览器中的地理定位都运行良好!

我还想指出,我正在使用 Phonegap Build 来构建应用程序。

有谁知道我该如何解决这个问题?有人遇到同样的问题吗?

最佳答案

从您的代码示例中,当您有一个空的错误处理程序 function (error) {} 时,您如何知道没有引发错误?

getCurrentPosition() 对设备位置发出单个请求。如果只调用一次,位置超时可能会在设备上的 GPS 硬件有机会获得定位之前发生。

我建议使用 watchPosition() 来设置一个观察器,它会在操作系统每次收到位置更新时调用成功函数。如果您只需要一个位置,则可以清除观察器,可选择检查以确保您的位置精度可接受。

例如:

var minAccuracyInMetres = 50;

var positionWatcher;

function onDeviceReady(){
positionWatcher = navigator.geolocation.watchPosition(
geolocationSuccess,
geolocationError,
{maximumAge:0, timeout: 10000, enableHighAccuracy: true});
}

function geolocationSuccess(position){
// Reject if accuracy is not sufficient
if(position.coords.accuracy > minAccuracyInMetres){
return;
}

// Only single position required so clear watcher
navigator.geolocation.clearWatch(positionWatcher);

// Do something with the user's location...

}

function geolocationError(error){
console.warn("Error while retrieving current position. " +
"Error code: " + error.code + ",Message: " + error.message);
}

document.addEventListener("deviceready", onDeviceReady, false);

关于android - Phonegap 地理定位不适用于 Android(Nexus 设备),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com