2014-09-15 2 views
0

У меня есть одна проблема. Я смотрел на другие ответы здесь о переполнении стека по одному и тому же вопросу, и я не могу заставить их работать на меня. Поэтому я попробую спросить здесь. То, что я хочу сделать, - это когда я нахожусь на карте, и у меня есть местоположение пользователя, которое я хочу автоматически увеличить.mapview autozoom на текущем месте автоматический

Н-файл

#import <UIKit/UIKit.h> 
#import <MapKit/MapKit.h> 
#import <CoreLocation/CoreLocation.h> 

@interface WalkingTableViewController: UIViewController <MKMapViewDelegate> 




@property (weak, nonatomic) IBOutlet MKMapView *MKMapView; 







@end 

м-файл

#import "WalkingTableViewController.h" 


@interface UITableViewController() 

@end 

@implementation WalkingTableViewController 

- (void)viewDidLoad 

{ 
    [super viewDidLoad]; 
    self.MKMapView.showsUserLocation=YES; 
    self.MKMapView.delegate = self; 
    [self.MKMapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES]; 



} 



- (IBAction)StopButton:(id)sender 

- (IBAction)StartButton:(id)sender 



@end 
+0

что я хочу, чтобы он увеличивался, как в приложении RunKeeper – Andy

+0

Как у вас «есть местоположение пользователя»? Регулярно ли он поступает через CLLocationManager или у вас есть значение, и вы просто будете увеличивать масштаб один раз (т. Е. Он не изменяется при движении телефона). – Craig

ответ

1

Если вы хотите, чтобы увидеть масштаб анимации, я бы разместить код в методе viewDidAppear, так что анимация начинается сразу отображается контроллер представления.

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    CLLocationManager* tempLocationManager = [[CLLocationManager alloc] init]; 
    MKCoordinateRegion tRegion = MKCoordinateRegionMakeWithDistance([tempLocationManager.location coordinate], 20000, 20000); 
    [self.MKMapView setRegion:tRegion animated:animated]; 
} 

Отрегулируйте регион (уровень масштабирования, 20000 в приведенном выше примере) в соответствии с вашими потребностями.

+0

Я не вижу, как это будет работать, по крайней мере, не надежно. Недостаточно времени, чтобы «tempLocationManager» получил правильное исправление местоположения, поэтому, если GPS уже не работает, вы получите нулевое «местоположение». – Craig

+0

Вы правы, ссылка диспетчера местоположений должна храниться контроллером представления, или - если используется через все приложение - в делете приложения. Это то, что я делаю, при использовании CLLocationManager. Я не думал о подсчете ссылок, пытаясь предоставить простой пример кода для этого вопроса. – Christian

0

То, что вы должны сделать, это сказать MapView для увеличения в регионе. Это поможет вам начать:

CLLocationCoordinate2D center = _mapView.userLocation.coordinate; 
MKCoordinateRegion region = MKCoordinateRegionMake(center, MKCoordinateSpanMake(2000, 2000)); 
[_mapView setRegion:region animated:YES]; 
Смежные вопросы