aboutsummaryrefslogtreecommitdiff
path: root/files/zh-tw/web/api/geolocation/watchposition/index.html
blob: fc5109f1f574d3a3a5fb37236e891add9eaabec2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
---
title: Geolocation.watchPosition()
slug: Web/API/Geolocation/watchPosition
translation_of: Web/API/Geolocation/watchPosition
---
<p>{{ APIref("Geolocation API") }}</p>

<p><strong><code>Geolocation.watchPosition()</code></strong> 這個方法是用來註冊一個處理的函式,當使用者的裝置位置更新時,這個函式所傳入的回呼函式(callback function) 就會自動被呼叫。你也可以選擇性的定義錯誤時哪些錯誤回呼函式(error callback function) 需要被呼叫。</p>

<p>這個函式將回傳一組 ID 編號,此編號搭配 {{domxref("Geolocation.clearWatch()")}} 函式,即可停止更新使用者的位置。</p>

<h2 id="語法">語法</h2>

<pre class="syntaxbox"><em>id</em> = navigator.geolocation.watchPosition(<em>success[</em>, <em>error[</em>, <em>options]]</em>)</pre>

<h3 id="參數">參數</h3>

<dl>
 <dt><em>success</em></dt>
 <dd>一個回呼函式(callback function) 會被傳入一個 {{domxref("Position")}} 的物件。</dd>
 <dt><em>error</em> {{optional_inline}}</dt>
 <dd>一個選擇性的錯誤回呼函式(callback function),會被傳入一個{{domxref("PositionError")}} 的物件。</dd>
 <dt><em>options</em> {{optional_inline}}</dt>
 <dd>一個選擇性 {{domxref("PositionOptions")}} 的物件。</dd>
</dl>

<h2 id="範例">範例</h2>

<pre class="brush: js">var id, target, options;

function success(pos) {
  var crd = pos.coords;

  if (target.latitude === crd.latitude &amp;&amp; target.longitude === crd.longitude) {
    console.log('Congratulations, you reached the target');
    navigator.geolocation.clearWatch(id);
  }
}

function error(err) {
  console.warn('ERROR(' + err.code + '): ' + err.message);
}

target = {
  latitude : 0,
  longitude: 0
};

options = {
  enableHighAccuracy: false,
  timeout: 5000,
  maximumAge: 0
};

id = navigator.geolocation.watchPosition(success, error, options);
</pre>

<h2 id="備註">備註</h2>

<p>如果你的應用程式是跑在 firefox OS上,請參考 <a href="/en-US/docs/Web/API/Geolocation/navigator.requestWakeLock()">geolocation wake lock</a>,此方法可以讓你的程式在背景或螢幕關上時也能持續收到位置更新。</p>

<h2 id="規格">規格</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('Geolocation', '#watch-position', 'Geolocation.watchPosition()')}}</td>
   <td>{{Spec2('Geolocation')}}</td>
   <td>Initial specification.</td>
  </tr>
 </tbody>
</table>

<h2 id="瀏覽器的相容性">瀏覽器的相容性</h2>

<p>{{ CompatibilityTable() }}</p>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>5</td>
   <td>{{CompatGeckoDesktop("1.9.1")}}</td>
   <td>9</td>
   <td>10.60<br>
    Removed in 15.0<br>
    Reintroduced in 16.0</td>
   <td>5</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Chrome for Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatUnknown()}}</td>
   <td>{{CompatUnknown()}}</td>
   <td>{{CompatGeckoMobile("4")}}</td>
   <td>{{CompatUnknown()}}</td>
   <td>10.60</td>
   <td>{{CompatUnknown()}}</td>
  </tr>
 </tbody>
</table>
</div>

<h2 id="請參考">請參考</h2>

<ul>
 <li><a href="/en-US/docs/Web/API/Geolocation/navigator.requestWakeLock()">geolocation wake lock</a></li>
 <li><a href="/en-US/docs/WebAPI/Using_geolocation" title="/en-US/docs/WebAPI/Using_geolocation">Using geolocation</a></li>
 <li>這個介面屬於{{domxref("Geolocation")}}. 並且存取他的方式為{{domxref("NavigatorGeolocation.geolocation")}}.</li>
 <li>相反的操作: {{domxref("Geolocation.clearWatch()")}}</li>
 <li>類似的方法: {{domxref("Geolocation.getCurrentPosition()")}}</li>
</ul>