共计 1536 个字符,预计需要花费 4 分钟才能阅读完成。
地理位置
简介
Geolocation 对象允许估计用户的当前地理位置。请注意,并非所有设备都支持地理定位,而且即使支持的设备,其准确性也可能大相径庭。例如,台式机可能没有任何位置跟踪设备,只能根据其互联网连接报告一个精确到 50 公里范围的位置。然而,这至少可以确定用户所在的时区、国家,甚至可能是城市或城镇。另一方面,许多手机和平板电脑配备了 GPS 设备,能够准确报告其位置,误差在几米之内,并能够实时跟踪移动。
脚本编程
此对象没有脚本接口,因为在使用 JavaScript 或 TypeScript 编码时,您可以使用浏览器内置的 Geolocation API。
权限提示
请求用户位置时,出于隐私原因,大多数平台都会提示用户授权。每个平台都有自己特定的请求权限方式。用户可能会拒绝权限请求,此时会触发“错误”。您的项目应尽可能优雅地处理此类情况。通常,每个浏览器或平台都有方法在之前被拒绝后授予权限,但这要么涉及再次提示,要么需要在浏览器或应用程序平台设置中进行更改。一些平台在一次拒绝权限请求后会失败,甚至不会提示用户。
电池使用
应注意,跟踪用户位置可能需要激活手机或平板电脑中的 GPS 硬件,这可能会更快地耗尽电池。请求高精度位置信息也可能会消耗更多电量。尽量只在绝对必要的情况下请求用户位置,如果适用,请使用低精度,并请求一次性位置而不是长时间监视位置。
地理位置条件
- 支持 : 如果当前设备支持通过地理定位报告用户位置则为真。如果为假,则该对象的所有功能都将不起作用。
- 正在观看位置 : 在成功的“观察位置”操作之后为真,直到使用“停止观察”操作为止。
- 出错时 : 在请求权限或检索用户位置时发生错误时触发。ErrorMessage 表达式包含有关此触发器的更多信息。
- 位置更新 : 在成功的“请求位置”或“观察位置”操作后触发,当位置已更新时。这只会在一个成功的“请求位置”操作后触发一次,但在成功“观察位置”操作后定期触发,同时跟踪并更新位置。
地理位置 操作
- 请求位置 : 一次性请求用户的当前位置。用户可能会看到一个权限提示,他们必须批准才能返回任何信息;如果他们拒绝,将触发“错误”。可以将精度设置为高以获得更准确的结果,但这可能需要更长时间来计算并且消耗更多电池。Timeout 是设备必须在触发“错误”之前返回位置的最大时间(秒)。Maximum age 是可返回的缓存结果的最大年龄。如果为零,设备将主动尝试确定用户当时的位置。但是,如果它不为零,并且操作系统之前在该时间内请求过用户的位置,则可能立即返回先前的结果。这更快且可以节省电池,但结果不会接近实时。如果成功确定了结果,将触发“位置更新”。
- 观看位置 : 与“请求位置”相同,但会跟踪位置。每当有新的位置信息可用时,就会触发“位置更新”,直到使用“停止观察”操作为止。在移动设备上观察位置比一次性请求消耗更多电池。
- 停止观看 : 停止之前成功的请求以观察用户的位置。位置将不再更新。
停止观看 表达式
只有在“位置更新”触发时才会更新与位置相关的表达式,而这反过来只能在成功的“请求位置”或“观察位置”操作后发生。
准确性
- 海拔精度 : 估计的经度和纬度(对于 Accuracy)或高度(对于 AltitudeAccuracy)的精度(以米为单位)。精度或多或少是一个猜测,或者如果不知道,表达式返回 0。
- 高度 : 相对于海平面的高度估计值(以米为单位),如果不知道则为 0。
- 错误消息 : 在“错误”中,有关错误的附加信息的字符串。
标题
- 速度 : 在观察位置时,如果有的话,相对于正北的旅行方向角度和每秒速度(以米为单位),否则为 0。
纬度
- 经度 : 已确定的纬度和经度,受 Accuracy 的限制(可能不知道)。
- 时间戳 : 当前详细信息检索的时间戳。这是自 1970 年 1 月 1 日午夜以来的毫秒数(也称为 UNIX 时间戳)。