【问题标题】:how capturing geolocation with device offline - cordova如何使用离线设备捕获地理位置 - 科尔多瓦
【发布时间】:2015-08-23 04:40:29
【问题描述】:

我正在使用cordova开发一个应用程序,发现需要获取用户的纬度和经度数据,但我的应用程序将离线使用(无法访问互联网)。

我有两个问题:

1 - 如何检查设备是否处于活动状态?

2 - 如何在没有互联网连接的情况下离线获取纬度和经度?有可能吗?

【问题讨论】:

  • 你不需要互联网 tp 获取 GPS 数据
  • 你能离线捕捉位置吗?

标签: javascript android cordova geolocation


【解决方案1】:

我会尽量回答你:

1.- 您可以使用PhoneGap GeoLication API 来检查位置,以及是否启用了 GPS。也检查一下:Use PhoneGap to Check if GPS is enabled

2.- 是的,GPS 是一种卫星系统,可让您的设备跟踪其在地球上的当前位置。它独立于您的手机运营商,然后独立于互联网连接。然后,您的设备将能够知道它的位置。 HTML5 offline mode and geolocation

此外,您可能需要互联网连接才能显示地图。离线地图的解决方案不多。只是工匠:http://davidrs.com/wp/phonegap-3-0-leaflet-offline-maps/

希望对你有帮助

记住:开启飞行模式时,大部分设备也会关闭 GPS 天线。

【讨论】:

  • 感谢提示。关于使用离线GPS,在线到离线的过程是一样的吗?或改变我捕捉该地点的方式?
  • 你只会得到 lat 和 lng(肯定会是一样的)。你得到地名、街道和其他数据,你需要像谷歌地图这样的在线服务
【解决方案2】:

要检查 GPS 是否可用,您可以使用此diagnostic plugin - 它适用于 Android 和 iOS。它还可用于显示本地位置设置屏幕,以允许用户启用位置服务。例如:

cordova.plugins.diagnostic.isLocationEnabled(function(enabled){
    console.log("GPS is "+(enabled ? "enabled" : "disabled");
    if(!enabled){
        cordova.plugins.diagnostic.switchToLocationSettings();
    }
},function(error){
    console.error("An error occurred: "+ error);
});

正如另一个答案已经指出的那样,您可以使用 GPS 接收用户的位置,而无需使用地理定位 API 进行互联网连接,但如果您想显示地图,则需要一个不依赖于在线的自定义解决方案谷歌等地图。

如果您想在离线时记录用户的位置,您可以将此信息离线存储在本地永久存储中,并在用户再次连接互联网时上传。您可以使用 lawnchair 之类的东西作为存储空间。

【讨论】:

  • 感谢提示。关于使用离线GPS,在线到离线的过程是一样的吗?或改变我捕捉该地点的方式?
  • 无论您是在线还是离线,您使用 GPS 位置的方式都没有变化。您使用watchPosition() 设置了一个观察程序,并且每次操作系统从 GPS 硬件接收到位置更新时,都会调用您的处理程序函数。如果捕获用户位置是您的目标,我会将每个位置推入一个持久的本地队列,然后在在线时定期出列并上传队列条目。
  • 知道了...我的想法是让用户选择他想要保存网站的时间,这将等于一个保存点。我的应用程序的目的是在没有互联网的森林中使用,并且会从他访问的站点收集一些信息,然后将这些数据导出到在线应用程序。
  • 在我的项目中安装了插件,但发生了这个错误:第 36 行:未捕获的类型错误:无法读取未定义的属性“诊断”
  • 插件文档已过期 - 现在应该是 cordova.plugins,而不是 window.plugins - 我已经更新了我的示例 - 请参阅 this issue thread 了解更多信息。
【解决方案3】:

你可以使用 geolocationOptions 来控制它是否使用硬件 gps 模块:

navigator.geolocation.getCurrentPosition(onSuccess, onError, { enableHighAccuracy: true });

那么当你的手机准备好 gps 后,你可以在没有网络访问的情况下获取 gps 信息。

enableHighAccuracy:提示应用程序需要 最好的结果。默认情况下,设备会尝试检索 使用基于网络的方法进行定位。将此属性设置为 true 告诉框架使用更准确的方法,例如卫星 定位。 (布尔)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多