套件 | 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 中的「地理位置」,請務必在應用程式 xml 檔案的 infoAdditions
元素中增加關鍵字值配對。請參閱 infoAdditions
元素的 iOS 設定,取得詳細資訊。
詳細資訊
屬性 | 定義自 | ||
---|---|---|---|
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
isSupported : Boolean [靜態] [唯讀]
裝置可以使用位置感應器 (true);否則為 false。 | Geolocation | ||
locationAlwaysUsePermission : Boolean
這個屬性會決定 geolocation 的存取權限類型用法。 | Geolocation | ||
muted : Boolean [唯讀]
指定使用者已經拒絕存取 geolocation (true) 或允許 (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
事件偵聽程式。Geolocation 類別可以單獨使用,不用呼叫 setRequestedUpdateInterval()
方法。在這種情況下,平台會根據預設間隔回傳更新。
注意:第一代 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, 03:47 PM Z