教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

問答>HTML&JS+前端>如何監(jiān)視移動(dòng)設(shè)備的位置變化?

如何監(jiān)視移動(dòng)設(shè)備的位置變化?

來源傳智教育2022年06月27日 14時(shí)04分25秒

  有一個(gè)名詞叫做LBS(Location based Service,基于位置的服務(wù)),它是通過電信移動(dòng)運(yùn)營(yíng)商的無(wú)線電信網(wǎng)絡(luò)(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動(dòng)終端用戶的位置信息(地理坐標(biāo),或大地坐標(biāo))。

  getCurrentposition()方法只在調(diào)用時(shí)會(huì)得到位置信息,在LBS應(yīng)用中,檢測(cè)用戶位置變化是非常常見的需求。一個(gè)做法是通過循環(huán)調(diào)用的方式去檢測(cè)位置變化。

  例如,設(shè)置了一個(gè)10s作為獲取位置的間隔,這樣做的缺點(diǎn)是:編程人員無(wú)法知道用戶當(dāng)前的速度。如果在飛機(jī)高鐵上,10s可能已經(jīng)走了很長(zhǎng)一段距離,這樣提供給用戶的位置信息可能是延遲的,如果將間隔設(shè)置得很短,又會(huì)非常耗電、耗能,如果用戶長(zhǎng)時(shí)間沒動(dòng),這些查詢都是無(wú)用的。

  為了解決這個(gè)人問題,Geolocation還提供了watchPosition()方法,可以讓系統(tǒng)通知編程人員用戶的位置發(fā)生了變化。

  watchPosition()方法和getCurrentPositon()方法在調(diào)用上類似,但方法功能與getCurrentPosition()的區(qū)別是非常明顯的。調(diào)用該函數(shù)時(shí)會(huì)返回一個(gè)watchID,這個(gè)ID和setInterval()函數(shù)返回的ID類似,可以用于清除此次的監(jiān)視操作。

  watchPosition()方法也接受相同的3個(gè)參數(shù):success、error回調(diào),以及一個(gè)PositionOptions對(duì)象。

和我們?cè)诰€交談!