嗨,我刚刚开始学习aparche cordova。
我正在尝试将地理位置api连接到应用程序,并且已经使用cordova plugin add cordova-plugin-geolocation
为cordova安装了地理位置api
并且正在使用apache-cordova documentation的引用。
我的JavaScript文件是
// Listening for the device to be ready
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log("navigator.geolocation should be able to run successfully now...");
navigator.geolocation.getCurrentPosition(onSuccess,onError);
}
// onSuccess Callback
var onSuccess = function(position) {
// current GPS coordinates
if(navigator.geolocation){
console.log('Geolocation is there '+ position);
navigator.geolocation.getCurrentPosition(function(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');
}, function(error) {
console.log('Error while connecting to geolocation ' + error)
},
{timeout:10000});
}
else {
console.log('Geolocation is not there');
}
}
// onError Callback receives a PositionError object
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
我在控制台上得到输出
地理位置在那里未定义
即,位置=未定义。
并且发生onSuccess事件时我没有收到任何警报框。
该代码在ios上运行正常,但在Android /浏览器上却无法运行
最佳答案
我有这个问题。这是因为在开发模式下,URL为:http //:192.168.0.105
当网址具有https://192.168.0.105之类的ssl时,在移动工作中进行地理位置定位
您可以使用以下方法制作假证书:
https://blog.filippo.io/mkcert-valid-https-certificates-for-localhost/
例如,在类星体框架中,我设置:
devServer: {
https: true,
port: 8080,
open: true // opens browser window automatically
},
而这种配置解决了我的问题。