2013-11-02 3 views
0

Я хочу использовать представление карты, показывающее мое текущее местоположение, мое тестовое устройство - Ipad mini (WIFI, IOS7).Контакт IOS MapKit отсутствует в текущем местоположении

Я обновить текущее местоположение моей UIMapView в методе делегата

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 

{

CLLocation *currentLocation = [locations lastObject]; 
MyAnnotation *start = [[MyAnnotation alloc] init]; 
start.coordinate = currentLocation.coordinate; 

[_mapView addAnnotation:start]; 

MKCoordinateRegion region; 
region = MKCoordinateRegionMakeWithDistance(currentLocation.coordinate, 100, 100); 

[_mapView setRegion:region animated:YES]; 

}

Но я получаю результат, как на фото ниже, мое текущее местоположение в голубая точка, но красный штырь находится в другом месте. Я думаю, что штырь должен соответствовать моему текущему местоположению, синей точке. Но это не так. Может ли кто-нибудь сказать мне причину, спасибо.

enter image description here

+0

Попробуйте добавить аннотацию в методе делегата didUpdateUserLocation вида карты и используя userLocation.coordinate вместо собственного CLLocationManager (который может использовать различные критерии фильтрации, чем внутренний адрес m map для отображения голубой точки). – Anna

+0

My didUpateUserLocation delegate method похож на приведенный ниже код, но он получает тот же результат .:- (void) mapView: (MKMapView *) mapView didUpdateUserLocation: (MKUserLocation *) userLocation { CLLocationCoordinate2D coord = userLocation.location.coordinate; MKCoordinateRegion reg = MKCoordinateRegionMakeWithDistance (координата, 100, 100); mapView.region = reg; } – billwang1990

+0

Код в вашем комментарии не добавляет аннотации. Он просто устанавливает регион карты. Я предлагаю сделать addAnnotation (а также настройку области) в файле doUpdateUserLocation вместо didUpdateLocations. – Anna

ответ

0

причина заключается в том, что GPS не 100% точный и особенно не внутри здания

Смежные вопросы