текущее местоположение слишком медленное для просмотра - PullRequest
0 голосов
/ 06 апреля 2010

Я создаю приложение с картой в приложении и кнопкой, чтобы перейти на google.Map-приложение.

Код моей позиции:

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

float avgAccuracy = (newLocation.verticalAccuracy + newLocation.horizontalAccuracy)/2.0;


if (avgAccuracy < 500) {
    [locationManager stopUpdatingLocation];
    locationManager.delegate = nil;
}


storedLocation = [newLocation coordinate];

Коддля вида:

- (void)viewDidLoad {
[super viewDidLoad];

UIImage *image = [UIImage imageNamed: @"LogoNavBar.png"];
UIImageView *imageview = [[UIImageView alloc] initWithImage: image];

UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithCustomView: imageview];
self.navigationItem.rightBarButtonItem = button;
[imageview release];
[button release];

locationManager=[[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
[locationManager startUpdatingLocation];


mapView.showsUserLocation = YES;

NSLog(@"storedLocation-latitude für MKregion: %f", storedLocation.latitude);

MKCoordinateRegion region;
region.center.latitude = (storedLocation.latitude + 45.58058)/2.0;
region.center.longitude = (storedLocation.longitude - 0.546835)/2.0;
region.span.latitudeDelta = ABS(storedLocation.latitude - 45.58058);
region.span.longitudeDelta = ABS(storedLocation.longitude + 0.546835);
[mapView setRegion:region animated:TRUE];


MKCoordinateRegion hotel;
hotel.center.latitude = 45.58058;
hotel.center.longitude = -0.546835;


HotelPositionMarker* marker = [[HotelPositionMarker alloc] initWithCoordinate:hotel.center];
[mapView addAnnotation:marker];
[marker release];
}

Моя проблема: когда «viewDidLoad» запускается, «хранится» все равно 0,0000, требуется немного больше времени, чтобы получить собственную позицию, чем для начала просмотра.Журнал для «сохраненного местоположения» в разделе «viewDidLoad» равен 0, в то время как журнал для «сохраненного местоположения» в «- (IBAction)», когда карта видима, содержит правильные значения.

Как можноУ меня получилось, чтобы мои координаты были перед загрузкой вида?Мне нужно, чтобы они центрировали мнение относительно собственной позиции и позиции, данной мной.

MKCoordinateRegion region;
region.center.latitude = (storedLocation.latitude + 45.58058)/2.0;
region.center.longitude = (storedLocation.longitude - 0.546835)/2.0;
region.span.latitudeDelta = ABS(storedLocation.latitude - 45.58058);
region.span.longitudeDelta = ABS(storedLocation.longitude + 0.546835);
[mapView setRegion:region animated:TRUE];

Ответы [ 2 ]

0 голосов
/ 19 июня 2011

Позвоните вашему LocationManager, прежде чем вызывать viewController с картой. И передайте locationManager в качестве переменных-членов viewController, который вы инициализируете и отправляете. Это ваш первый взгляд, встроить его в делегат. Может ли это сработать?

0 голосов
/ 06 апреля 2010

Попробуйте получить значение locationManager.location для начального значения, но оно может быть старым или даже nil.

Если вы хотите текущее местоположение, вы должны ждать CLLocationManager. Даже приложение Google Maps ждет несколько секунд, прежде чем показывать ваше местоположение.

...