iphone - CLLocationManager initialization and call on button -


i want app current location when user taps button. initialize locationmanager object in init method.

first question: if i'm going need currentlocation every time press button? or should initialize in viewdidload?

- (id)initwithnibname:(nsstring *)nibnameornil bundle:(nsbundle *)nibbundleornil {     self = [super initwithnibname:nibnameornil bundle:nibbundleornil];      if (self)     {         // create location manager object         locationmanager = [[cllocationmanager alloc] init];         locationmanager.delegate = self;          // best accuracy posibble         [locationmanager setdesiredaccuracy:kcllocationaccuracybest];     }     return self; } 

in delegate method stopupdatinglocation got currentlocation.

// delegate method - (void)locationmanager:(cllocationmanager *)manager didupdatelocations:(nsarray         *)locations    {     cllocation *currentlocation = [locations lastobject];      [locationmanager stopupdatinglocation]; } 

here startupdatinglocation button:

- (ibaction)getcurrentlocation:(id)sender {     [locationmanager startupdatinglocation]; } 

second question is: when press button 1st time, right location, when change location in simulator , press again shows 1st one. again, when press button, shows right one. have tried initialize locationmanager every time button pressed doesn't work way neither.

i read on other post because of location cache or that. how remove cache ? because i'm going store location somewhere else in db anyways don't need old one..

question 1: should initialize location manager in init or in viewdidload

i go viewdidload, because way can sure dependencies have been loaded.

question 2: user location isn't being updated.

the user location isn't changing because stop listening location updates after receive location information first time:

[locationmanager stopupdatinglocation]; 

but start listening again when user presses getcurrentlocation button. can still go approach, if like, set flag in getcurrentlocation action update ui when new location found.

example:

// delegate method - (void)locationmanager:(cllocationmanager *)manager didupdatelocations:(nsarray         *)locations     {      cllocation *currentlocation = [locations lastobject];       [locationmanager stopupdatinglocation];       if (self.updateuionnextlocation) {          [self updateuiwithlocation:currentlocation];          self.updateuionnextlocation = no;      } }  ...  - (ibaction)getcurrentlocation:(id)sender {      self.updateuionnextlocation = yes;      [locationmanager startupdatinglocation]; } 

Comments

Popular posts from this blog

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -

node.js - Bad Request - node js ajax post -