如何使用设备离线捕获地理位置 - cordova

时间:2015-06-08 15:53:44

标签: javascript android cordova geolocation

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

我有两个问题:

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

2 - 如何在没有互联网连接的情况下使经纬度脱机?有可能吗?

3 个答案:

答案 0 :(得分:6)

我会尽力回答你:

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

2.-是的,GPS是一个卫星系统,可让您的设备跟踪它在地球上的当前位置。它独立于您的手机操作员,然后来自Internet连接。然后,您的设备将能够知道它的位置。 HTML5 offline mode and geolocation

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

希望有所帮助

记住:打开平面模式时,大多数设备也会关闭GPS天线。

答案 1 :(得分:1)

要检查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的内容进行存储。

答案 2 :(得分:0)

如果它使用硬件gps模块,则可以使用geolocationOptions进行控制:

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

然后,当您的手机准备好GPS时,无需网络即可获取GPS信息。

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