How do you repeatedly check iPhoneInput.lastLocation?

I'm trying to monitor GPS location and compass heading (using the Unity Enhancement Park) as frequently as possible. However, the values are not updating in either the Editor or on iPhone the way I've got my Update() function working (below). The two sets of read-outs are wildly different.

Any suggestions on how to repeatedly check location?

Thanks

.M.

function Update () {   
    // User denied access to device location

    heading = 0;
    if (PlayerPrefs.GetFloat("sb_trueHeading") != 0) heading = PlayerPrefs.GetFloat("sb_trueHeading");

    // User denied access to device location
    if (iPhoneSettings.locationServiceStatus == LocationServiceStatus.Failed) {
    result = "User denied access to device location";
    return;
    }
    // Access granted and location value could be retrieved
    else {
    result = "Location: " + iPhoneInput.lastLocation.latitude + "
" +
    "Longitude: " + iPhoneInput.lastLocation.longitude + "
" +
    "Altitude: " + iPhoneInput.lastLocation.altitude + "
" +
    "HorizontalAccuracy: " + iPhoneInput.lastLocation.horizontalAccuracy + "
" +
    "VerticalAccuracy: " + iPhoneInput.lastLocation.verticalAccuracy + "
" +
    "Timestamp: " + iPhoneInput.lastLocation.timestamp + "
" + 
    "Compass: " + heading; 
    }
}

What I did for my project was to just put the lastlocation call in the Update() function so it's called every frame. Don't worry though, it shouldn't actually get called every frame, only when the user has traveled more than 10 meters.

Update()
{
   longitude = iPhoneInput.lastLocation.longitude;
   //Same for lat
   //etc....
}

GPS itself is a great system and can measure positions with a high range of 5cm but it's limited to use of america's army and it needs to connect to more than 5 satellites. the regular receivers need 3 to 5 satellites and they don't change your position before moving 5m to 10m. so it's not a problem with your code/iphone at all it's just what you get from GPS.