Sol*_*ong 6 android geolocation cordova
我正在使用Phonegap.Geolocation来获取用户的当前位置.
我在官方网站的文档中找到了这个例子.
但是,即使执行了onDevice ready,也不会执行成功或错误函数回调.而我真的很困惑.
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
alert('deviceready');
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
// onSuccess Geolocation
//
function onSuccess(position) {
var element = document.getElementById('geolocation');
element.innerHTML = 'Latitude: ' + position.coords.latitude + '<br />' +
'Longitude: ' + position.coords.longitude + '<br />' +
'Altitude: ' + position.coords.altitude + '<br />' +
'Accuracy: ' + position.coords.accuracy + '<br />' +
'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
'Heading: ' + position.coords.heading + '<br />' +
'Speed: ' + position.coords.speed + '<br />' +
'Timestamp: ' + position.timestamp + '<br />';
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
Run Code Online (Sandbox Code Playgroud)
Jes*_*era 17
确保您已安装地理位置插件(运行phonegap local plugin add org.apache.cordova.geolocation),并且已在设备中启用GPS.
添加超时并设置enableHighAccuracy:
navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 10000, enableHighAccuracy: true});
Run Code Online (Sandbox Code Playgroud)
在某些模拟器中,您需要将enableHighAccuracy设置为false,因此如果仍然不起作用请尝试.
如果您使用的是Android模拟器,则它不会读取GPS值,因此我们需要通过命令行发送它们.我们需要在运行模拟器的端口中启动一个telnet会话(您可以检查模拟器窗口标题中的端口,开头的数字,在我的情况下为5554):
telnet localhost 5554
Run Code Online (Sandbox Code Playgroud)然后运行命令
geo fix -122.4 37.78
Run Code Online (Sandbox Code Playgroud)
如果您关闭应用程序,则需要重新发送地理位置,因此如果它不起作用,geo fix只需在打开应用程序之后立即运行命令,然后才会触发超时事件.
当手机功能无法使用时,请检查是否已设置应用中的相应权限.例如,对于互联网访问或Android设备上的地理位置,您的AndroidManifest.xml必须包含以下行:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15790 次 |
| 最近记录: |