npm i --save @awarns/geolocation
- 版本:1.0.0
- GitHub:
- NPM: https://npmjs.net.cn/package/%40awarns%2Fgeolocation
- 下载
- 昨天: 0
- 上周: 0
- 上个月: 0
@awarns/geolocation
本模块包含定期获取手机地理位置的任务。
该插件作为 nativescript-context-apis 插件(同作者)的包装,提供 GNSS 位置获取任务。按需获取手机位置,即使在后台也可以。
使用以下命令行指令安装插件
ns plugin add @awarns/geolocation
用法
安装和设置此插件后,您将可以访问两个不同的任务来获取手机位置。结果将是一个 地理位置 记录,如下所述。
任务
任务名称 | 描述 |
---|---|
acquirePhoneGeolocation |
允许按需获取最精确的位置,这是从手机获取的几个位置之一。要收集的位置数量和决策是可以配置的 |
acquireMultiplePhoneGeolocation |
允许重复获取手机位置。类似于单个获取任务,每个报告的值可以从获取的几个值中选择。扫描将持续进行,直到剩余执行时间用完(最多 3 分钟或在下一次计划的任务执行之前,以先发生者为准) |
注意:所有任务都需要 精确位置权限和活动位置服务 才能执行。每个任务将在框架初始化期间自动请求缺少的部分
获取单个 GNSS 位置
要为此任务注册使用,您只需将其导入并在应用程序的任务列表中调用其生成函数即可
import { Task } from '@awarns/core/tasks';
import { acquirePhoneGeolocationTask } from '@awarns/geolocation';
export const demoTasks: Array<Task> = [
acquirePhoneGeolocationTask(/* optional */ { bestOf: 3, timeout: 10000 }),
];
任务生成参数
名称 | 类型 | 描述 |
---|---|---|
bestOf |
数字 |
要收集的位置数量,以选择最精确的一个。请求的位置数量越多,任务运行所需的时间就越长。默认值为 3 |
timeout |
数字 |
以毫秒为单位限制收集位置的最大时间。默认值是 10000 (10s)。 |
任务输出事件
示例用法在应用程序任务图中
on(
'startEvent',
run('acquirePhoneGeolocation')
.every(1, 'minutes')
.cancelOn('stopEvent')
);
on('geolocationAcquired', run('writeRecords'));注意:要使用
writeRecords
,任务持久化包必须已安装和配置。请参阅 持久化包文档。
批量获取 GNSS 位置
要为此任务注册使用,您只需将其导入并在应用程序的任务列表中调用其生成函数即可
import { Task } from '@awarns/core/tasks';
import { acquireMultiplePhoneGeolocationTask } from '@awarns/geolocation';
export const demoTasks: Array<Task> = [
acquireMultiplePhoneGeolocationTask(/* optional */ { bestOf: 1, timeout: 15000 }),
];
任务生成参数
名称 | 类型 | 描述 |
---|---|---|
bestOf |
数字 |
要报告的每个最终记录中要收集的位置数量,以从子集中选择最精确的一个。请求的位置数量越多,报告的总位置数量就越少。这意味着,在假设有时间为收集 6 个位置的情况下,如果 bestOf 值为 1,则将报告 6 个位置;而如果 bestOf 值为 3,在相同的情况下,则只会报告 2 个位置,这两个位置是两个 3 个位置子集中最精确的。 |
timeout |
数字 |
以毫秒为单位限制收集每个位置的最大时间。默认值是 15000 (15s)。 |
任务输出事件
示例用法在应用程序任务图中
on(
'startEvent',
run('acquireMultiplePhoneGeolocation', { maxInterval: 10000 /* (Optional) Maximun interval between location acquisitions (this includes the time it takes to obtain all the locations in a reporting subset, if bestOf > 1), unlimited by default */ })
.every(1, 'minutes')
.cancelOn('stopEvent')
);
on('geolocationAcquired', run('writeRecords'));注意:要使用
writeRecords
任务,必须安装和配置持久化包。请参阅 持久化包文档。
事件
名称 | 有效载荷 | 描述 |
---|---|---|
geolocationAcquired |
地理位置 | Array |
表示已获取一个或多个新的 GNSS 位置 |
记录
地理位置
属性 | 类型 | 描述 |
---|---|---|
id |
字符串 |
记录的唯一 ID |
类型 |
字符串 |
始终为 geolocation |
变化 |
变化 |
始终为 none 。位置永远不会开始或结束,它们代表手机在特定时间的空间时间快照。要检测手机何时开始和结束在某个地方,请使用地理围栏包 |
时间戳 |
日期 |
获取位置时的本地时间 |
纬度 |
数字 |
手机所在位置的纬度 |
经度 |
数字 |
手机所在位置的经度 |
海拔 |
数字 |
手机所在位置的海拔 |
垂直精度 |
数字 |
纬度的估计误差 |
水平精度 |
数字 |
经度的估计误差 |
速度 |
数字 |
获取位置时手机的估计速度 |
方向 |
数字 |
获取位置时手机的估计方向 |
许可证
Apache 许可证版本 2.0