Apple Watch Kit - 获得标题

时间:2015-03-29 12:01:08

标签: ios apple-watch

是否有任何信息可以收到'标题' Apple Watch?

我想显示用户需要去的箭头,相对于他当前持有手表的方式。在iPhone上,您可以使用CLLocationManager标题执行此操作,但我不确定这是否适用于Apple Watch(我不需要iPhone标题;)

有关于此的任何文件,您可以将我链接到?

3 个答案:

答案 0 :(得分:2)

Apple手表中没有指南针......你可以根据iPhone的指南针猜测基于连续GPS位置的标题(GPS也在iphone上运行......)可能不适合!

答案 1 :(得分:1)

您现在可以通过使用Core Location中的“ magneticHeading”或“ trueHeading”(Apple Watch Serie 5 +,watchOS 6.0 +)

这是一个基本示例:

<!DOCTYPE html>
<html>
<head>
  <link rel ="stylesheet" type="text/css" href="456.css">

  <meta charest ="utf-8">
  <title>error-msg will not display correctly at the same time</title>

  <script>
  function validation(thisForm) {
  
//validation of fName
    if(!thisForm.fname.value.length)
    {
      document.getElementById('fname-error').style.display="block";
    }
    else
    {
      document.getElementById('fname-error').style.display="none";
    }
        //validation of lName
    if(!thisForm.lname.value.length) //if there is no input to lName
    {
      document.getElementById('lname-error').style.display="block";
    }
    else
    {
      document.getElementById('lname-error').style.display="none";
    }
    if(!thisForm.fname.value.length || !thisForm.lname.value.length)
    {
      return false
    }
    return true;
}
  </script>
  <style> 
  .error-msg {
  display: none;
  color:red;
  border: 1px solid;
  width: 120px;
  margin-left: 10px;

}
  </style>
</head>
  <body>
    <form action="#" onSubmit="return validation(this);">

    <fieldset>
      <legend>Application Name</legend>
      <div class="name">
        <label for="fname">First Name</label>
        <input type="text" id="fname" name="fname">
        <span class="error-msg" id="fname-error">First name is required</span>
      </div>

      <div class="name">
        <label for="lname">Last Name </label>
        <input type="text" id="lname" name="lname" size="50">
        <span class="error-msg" id="lname-error">Last name is required</span>
      </div>
       
    </fieldset>
    
    <input type="submit" name="submit" value="submit"/>
     
   
    </form>
  </body>
</html>

然后,当您需要标题值时:

import CoreLocation

class yourClass {
    let locationManager = CLLocationManager()

    init() {
        setupCoreLocation()
    }

    func setupCoreLocation() {
        guard CLLocationManager.headingAvailable() else { return }
        locationManager.delegate = self
        locationManager.requestWhenInUseAuthorization()
        // additional setup available if needed
    }
}

extension yourClass: CLLocationManagerDelegate {
    func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
        let magneticHeading = newHeading.magneticHeading
        let trueHeading = newHeading.trueHeading
        // Do something with the new heading values
    }
}

当您不再需要它们时,您可以这样做:

locationManager.startUpdatingHeading()

以下是所有Apple的官方文档:

Core Location

CLHeading

magneticHeading

trueHeading

Heading and Course Information basic knowledge

别忘了先检查“标题”是否可用:headingAvailable()

答案 2 :(得分:0)

由于WatchKit无法访问Apple Watch的硬件(手表中没有磁力计,无论如何),您正在处理手机的标题。

因此,在静止不动的情况下获得准确的航向目前是不可行的。但是,如果您首先需要进行一些移动,则可以从几个记录的位置坐标计算方位。 this question(iOS)或this one(一般数学)的答案可能对您有用。