包 | flash.sensors |
类 | public class Geolocation |
继承 | Geolocation EventDispatcher Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2, Flash Lite 4 |
如果设备支持 geolocation,您可以使用此类获得设备当前的地理位置。地理位置以纬度和经度坐标形式(以 WGS-84 标准格式)显示在设备上。当设备的位置更改时,可以收到关于更改的更新。如果设备支持此功能,您将可以获得关于位置的最新更改的高度、精度、标题、速度和时间戳的信息。
AIR 配置文件支持:仅移动设备支持此功能。桌面或 AIR for TV 设备不支持此功能。您可以使用 Geolocation.isSupported
属性在运行时测试是否受支持。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持。
注意:要在 iOS 中启用 Geolocation,请确保对应用程序 xml 文件的 infoAdditions
元素添加一个键值对。有关 infoAdditions
元素的更多信息,请参阅 iOS 设置。
了解详细信息
属性 | 由以下参数定义 | ||
---|---|---|---|
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
isSupported : Boolean [静态] [只读]
位置传感器在设备上是否可用,可用为 true,不可用为 false。 | Geolocation | ||
locationAlwaysUsePermission : Boolean
此属性确定 geolocation 的访问权限类型使用情况。 | Geolocation | ||
muted : Boolean [只读]
指定用户是已经拒绝对 geolocation 的访问 (true) 还是已经允许对 geolocation 的访问 (false)。 | Geolocation | ||
permissionStatus : String [静态] [只读] | Geolocation |
方法 | 由以下参数定义 | ||
---|---|---|---|
创建新的 Geolocation 实例。 | Geolocation | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
将事件调度到事件流中。 | EventDispatcher | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
表示对象是否已经定义了指定的属性。 | Object | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
Geolocation | |||
设置循环操作动态属性的可用性。 | Object | ||
用于设置更新的时间间隔(以毫秒为单位)。 | Geolocation | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher |
事件 | 摘要 | 由以下参数定义 | ||
---|---|---|---|---|
[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | |||
[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。 | EventDispatcher | |||
Geolocation | ||||
Geolocation 对象在用户更改对位置传感器的访问时调度 status 事件。 | Geolocation | |||
为响应来自位置传感器的更新,调度 update 事件。 | Geolocation |
isSupported | 属性 |
locationAlwaysUsePermission | 属性 |
locationAlwaysUsePermission:Boolean
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 29 |
此属性确定 geolocation 的访问权限类型使用情况。权限类型可以为“始终使用”或“在使用中”。如果此属性设置为 false
,它将请求“在使用中”权限或“始终使用”权限。在调用 requestPermission()
之前设置此属性。 此属性的默认值为 false
。
实现
public function get locationAlwaysUsePermission():Boolean
public function set locationAlwaysUsePermission(value:Boolean):void
muted | 属性 |
permissionStatus | 属性 |
Geolocation | () | 构造函数 |
public function Geolocation()
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2, Flash Lite 4 |
创建新的 Geolocation 实例。
requestPermission | () | 方法 |
public function requestPermission():void
setRequestedUpdateInterval | () | 方法 |
public function setRequestedUpdateInterval(interval:Number):void
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2, Flash Lite 4 |
用于设置更新的时间间隔(以毫秒为单位)。更新间隔仅用作节省电池电量的提示。位置更新间的实际时间可能大于或小于此值。使用此方法对更新间隔所做的任何更改都将影响所有注册的 update
事件侦听器。无需调用 setRequestedUpdateInterval
方法即可使用 Geolocation 类。在这种情况下,平台将根据其默认间隔返回更新。
注意:第一代 iPhone 没有配备 GPS 装置,仅偶尔调度 update
事件。在这些设备上,Geolocation 对象最初会调度一个或两个 update
事件。信息变更显著时,它就会调度 update
事件。
参数
interval:Number — 请求的更新间隔。如果 interval <= 0,则对此方法的任何调用都无效。
|
引发
ArgumentError — 指定的 interval 小于零。
|
permissionStatus | 事件 |
status | 事件 |
flash.events.StatusEvent
属性 StatusEvent.type =
flash.events.StatusEvent.STATUS
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2, Flash Lite 4 |
Geolocation 对象在用户更改对位置传感器的访问时调度 status
事件。例如,如果为了响应设备提示,用户阻止应用程序访问位置数据,则 Geolcation 对象将调度 status
事件。当位置传感器不可用的地区的状态发生更改时,Geolocation 实例的 muted
属性为 true
。
status
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
code | 对象状态的描述。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
level | 消息类别,例如 "status" 、"warning" 或 "error" 。 |
target | 报告其状态的对象。 |
相关 API 元素
update | 事件 |
flash.events.GeolocationEvent
属性 GeolocationEvent.type =
flash.events.GeolocationEvent.UPDATE
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2, Flash Lite 4 |
为响应来自位置传感器的更新,调度 update
事件。在下列情况下调度该事件:
- 当通过
addEventListener()
附加新的侦听器函数时,此事件将一次性传送给所有注册的侦听器,以提供位置的当前值。注意:如果设备具有最后已知的位置,AIR 将立即调度第一个事件;您的代码必须知道初始调度的事件可能不包含当前位置。 - 以设备确定的间隔从平台获得位置更新时。
- 当应用程序丢失对位置的更改时(例如,在休眠后唤醒应用程序)。
注意:第一代 iPhone 没有配备 GPS 装置,仅偶尔调度 update
事件。在这些设备上,Geolocation 对象最初会调度一个或两个 update
事件。信息变更显著时,它就会调度 update
事件。
GeolocationEvent
事件对象的 type
属性的值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 接收数据的 Geolocation 对象。 |
update
事件时,显示这些事件的维度、经度和水平精度。
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.GeolocationEvent; import flash.events.MouseEvent; import flash.events.StatusEvent; import flash.sensors.Geolocation; import flash.text.TextField; import flash.text.TextFormat; public class GeolocationTest extends Sprite { private var geo:Geolocation; private var log:TextField; public function GeolocationTest() { super(); stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; setUpTextField(); if (Geolocation.isSupported) { geo = new Geolocation(); if (!geo.muted) { geo.addEventListener(GeolocationEvent.UPDATE, geoUpdateHandler); } geo.addEventListener(StatusEvent.STATUS, geoStatusHandler); } else { log.text = "Geolocation not supported"; } } public function geoUpdateHandler(event:GeolocationEvent):void { log.text = "latitude : " + event.latitude.toString() + "\n"; log.appendText("longitude : " + event.longitude.toString() + "\n"); } public function geoStatusHandler(event:StatusEvent):void { if (geo.muted) geo.removeEventListener(GeolocationEvent.UPDATE, geoUpdateHandler); else geo.addEventListener(GeolocationEvent.UPDATE, geoUpdateHandler); } private function setUpTextField():void { log = new TextField(); var format:TextFormat = new TextFormat("_sans", 24); log.defaultTextFormat = format; log.border = true; log.wordWrap = true; log.multiline = true; log.x = 10; log.y = 10; log.height = stage.stageHeight - 20; log.width = stage.stageWidth - 20; log.addEventListener(MouseEvent.CLICK, clearLog); addChild(log); } private function clearLog(event:MouseEvent):void { log.text = ""; } } }
Tue Jun 12 2018, 11:04 AM Z