title: How to use CLLocationManager [self.locationManager startUpdatingHeading] without GPS?
body: <p>If I used </p>
  
  <pre><code>[self.locationManager startUpdatingHeading];
  </code></pre>
  
  <p>An arrow shows up on status bar. </p>
  
  <p>Does </p>
  
  <pre><code>[self.locationManager startUpdatingHeading]; 
  </code></pre>
  
  <p>uses GPS?</p>
  
  <p>If it doesn't, why arrows does show up on statusbar?</p>
  
  <p>Note: I've read the documentation. True heading is available only if location is enabled. What I am thinking is</p>
  
  <ol>
  <li>Enable location</li>
  <li>Get heading once.</li>
  <li>Compute difference between true heading and magnetic heading.</li>
  <li>Store that number in a static variable.</li>
  <li>Disable location.</li>
  <li>Every time heading is updated, get the magnetic heading, and then add the difference between true heading and magnetic heading.</li>
  </ol>
  
  <p>Another thing I think might work is to set location accuracy to be so wide that it doesn't require GPS at all.</p>
  
  <p>I wonder if it's possible. For example, can we disable location update programatically? As far as I know calling stopUpdatingLocation does not turn off location update (didUpdateToLocation no longer called but an ugly arrow is on status bar). </p>
  
  <p>self.locationManager.locationServicesEnabled=false doesn't work because the property is a class property that's read only. Looks like there is no way to turn off locationServices and yet update heading. I may be wrong. Am I?</p>
  
  <p>Basically I want to help my visitor see direction without excessive GPS.</p>