@awarns/geolocation
AwarNS 框架包,允许按需获取手机的地理位置
npm i --save @awarns/geolocation

@awarns/geolocation

npm (scoped) npm

本模块包含定期获取手机地理位置的任务。

该插件作为 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