导航器出现问题, cordova 项目中的地理定位失败

332nm8kg  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(166)

我正在做我的第一个 cordova 项目,我正在一个模拟器上测试。
我需要使用导航仪地理定位来获取坐标。
我已经安装了cordova geolocation插件,它也在config.xml文件中提到了。我已经在模拟器设置中为应用程序提供了位置访问权限,我还在模拟器的扩展设置中单击了“发送”按钮。
尽管如此,地理定位还是失败了,我不知道为什么。
下面是js代码:
//第一次初始化进入页面,处理进入页面输入验证

$(document).delegate("#entry_page","pageinit",function()
{

  if (navigator.geolocation)
  {
    navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 30000});
  }

  //rest of code

    if(latitude == null || longitude == null)
    {
      alert("Location not given. Please allow location access and refresh the application");
      error_free = 0;
    }

    if(dateTime == null)
    {
      alert("Date & Time not acquired");
      error_free = 0;
    }

    // remaining code
    });
  });

  //Get location and time values on successful location access
  function onSuccess(position)
  {
    latitude = position.coords.latitude;
    longitude = position.coords.longitude;
    today = new Date();
    date = today.getDate()+'/'+(today.getMonth()+1)+'/'+today.getFullYear();
    time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
    dateTime = date+' '+time;

  }

  //Throw error if location access is not possible
  function onError(error) {
    var txt;
    switch(error.code)
    {
      case error.PERMISSION_DENIED:
      txt = 'Location permission denied';
      break;
      case error.POSITION_UNAVAILABLE:
      txt = 'Location position unavailable';
      break;
      case error.TIMEOUT:
      txt = 'Location position lookup timed out';
      break;
      default:
      txt = 'Unknown position.'
    }
    alert(txt)
  }

  //Reinitialise entry_page when it is revisted again
  $(document).on("pageshow", "#entry_page", function()
  {

    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(onSuccess, onError, {timeout: 30000});
    }

    changeHeaderName("#chickenNameHeader");
    clearFields();

});

我正在使用Nginx和Nodejs。我的Nginx配置为https。

ig9co6j1

ig9co6j11#

如果您的android版本〉= Android M,您需要首先向用户请求运行时位置权限。
使用this cordova plugin请求位置权限。

var permissions = cordova.plugins.permissions;

permissions.hasPermission(permissions.ACCESS_COARSE_LOCATION, function(status){

   if (!status.hasPermission) {

    //Does not have the required permission, request for the same
    permissions.requestPermission(permissions.ACCESS_COARSE_LOCATION, 
       function(status) {
         if(status.hasPermission) {
            //Has permission already, fetch the location
         }
       }, function () {

   });

  }
  else {
    //Has permission already, fetch the location
  }
});
4si2a6ki

4si2a6ki2#

对我来说,这段代码很好用:

navigator.geolocation.getCurrentPosition(position => {
  const { latitude, longitude } = position.coords;
  // Show a map centered at latitude / longitude.
  alert(latitude + '==' + longitude);
});

我正在使用对象解构(ES6)。

相关问题