/ / iOS: Ako môžem obnoviť polohu používateľa MKMapView, kedykoľvek používateľ načíta aplikáciu - ios, iphone, mkmapview, xcode5

iOS: Ako môžem obnoviť polohu používateľa MKMapView zakaždým, keď používateľ načíta aplikáciu - ios, iphone, mkmapview, xcode5

Implementujem MKMapView a funguje dobre, keď používateľ načíta aplikáciu prvýkrát, ale potom neobnoví polohy používateľa ani vtedy, keď sa používateľ vráti z pozadia.

Táto časť môjho kódu:

- (void)viewDidLoad
{
[super viewDidLoad];
self.mapView.delegate=self;
self.mapView.zoomEnabled = YES;
self.mapView.userTrackingMode = MKUserTrackingModeFollow;
self.mapView.zoomEnabled = YES;
self.mapView.showsUserLocation = YES;
}

Pokúsil som sa implementovať vyššie uvedený kód do viewWillAppear, aby som zistil, či sa načíta znova pri každom načítaní aplikácie používateľom, ale nefunguje to.

niekto z vás vie, má predstavu o tom, ako je možné načítať zobrazenie mapy vždy, keď sa načíta aplikácia?

Veľmi si vážim vašu pomoc.

odpovede:

1 pre odpoveď č. 1

Na tento účel môžete použiť metódu delegovania:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
}

0 pre odpoveď č. 2

Je trochu nejasné, čo máte na mysli, „neobnovuje polohu používateľa“ a „znova načítať“, takže predpokladám, že chcete znovu načítať mapu na aktuálnu polohu používateľa pri opätovnom načítaní.

Po prvé, na spustenie vecí budete potrebovať kód v aplikácii AppDelegate applicationDidBecomeActive: alebo applicationWillEnterForeground: method. To je vaše "spúšťacie" oznámenie, kde môžete iniciovať akciu.

Potom, na novšie miesto, niečo ako:

- (void) _putMapToCurrentlLocation
{
CLLocation* location = [[LocationManager sharedInstance] currentLocation];

MKCoordinateRegion newRegion;
newRegion.span.latitudeDelta = 0.13;
newRegion.span.longitudeDelta = 0.12;
newRegion.center.latitude = location.coordinate.latitude - (0.2*newRegion.span.latitudeDelta);
newRegion.center.longitude = location.coordinate.longitude;

[self.mapView setRegion:newRegion animated:YES];

self.mapView.showsBuildings = YES;
self.mapView.showsPointsOfInterest = YES;
self.mapView.showsUserLocation = YES;
}

Poznámka: Trieda „LocationManager“ je samostatná trieda baní, ktorá sa jednoducho stará o registráciu oznámení o polohe zo systému iOS a podrží sa na poslednom hlásenom mieste. Ak s tým potrebujete pomoc, je to otázka „celá“… :-)


0 pre odpoveď č. 3

Vaším riešením je upozornenie. Pokúste sa implementovať nižšie

//appdelegate.m
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if([[UIApplication sharedApplication] applicationState]==UIApplicationStateActive)
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"applicationEnterForeground" object:self];
}
}

//yourViewController.m
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadMapView) name:@"applicationEnterForeground" object:nil];
}

-(void)reloadMapView
{
NSLog(@"Reload your map view here");
}

-1 pre odpoveď č. 4

vo vašom ViewControlleri viewDidLoad metóda pridajte pozorovateľa, ak používateľ znova načíta aplikáciu a do metódy obnovte zobrazenie mapy kódom

[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(yourMethod)
name:UIApplicationDidBecomeActiveNotification
object:nil];

v dealloc metóde odstrániť pozorovateľa

- (void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:Nil];
}