scala js中的地理位置

时间:2016-11-08 09:58:16

标签: scala.js

我的Scala.js程序中有以下功能:

def geo():Unit={
  var window = document.defaultView
  val nav = window.navigator
  val geo: Geolocation = nav.geolocation
  def onSuccess(p:Position) = {
   println( s"latitude=${p.coords.latitude}")                // Latitude
   println( s"longitude=${p.coords.longitude}")              // Longitude
  }
  def onError(p:PositionError) = println("Error")
  geo.watchPosition( onSuccess _, onError _ )
}

我从我的main函数调用这个函数。但它经过一段时间后不断打印经度和纬度。我只打印一次。我无法理解我在这里做错了什么,我该怎么办才能让它一次又一次地停止打印?

1 个答案:

答案 0 :(得分:1)

您可以使用clearWatch在观察到位置后立即停止观看,如下所示:

def geo(): Unit = {
  val window = document.defaultView
  val nav = window.navigator
  val geo: Geolocation = nav.geolocation
  var watchID: Int = 0
  def onSuccess(p:Position) = {
    println(s"latitude=${p.coords.latitude}")                // Latitude
    println(s"longitude=${p.coords.longitude}")              // Longitude
    geo.clearWatch(watchID) // only observe one position
  }
  def onError(p:PositionError) = println("Error")
  watchID = geo.watchPosition(onSuccess _, onError _)
}