iPhone - местоположение пользователя не отображается при обновлении с помощью менеджера CLLocation на iOS 3.x - PullRequest
0 голосов
/ 06 января 2011

У меня есть вид карты, который при выводе его контроллера вида на экран показывает местоположение пользователя и некоторые другие пользовательские аннотации.когда контроллер представления выдвигается на экран, он вызывает функцию - (void) adduserLocation, которая показывает местоположение пользователя.

У меня также есть кнопка обновления, которая также вызывает - (void) adduserLocation и обновляет всеаннотации и местоположение пользователя, но при нажатии кнопки обновления местоположение пользователя не отображается на карте, даже если регистрируются все те же обратные вызовы и обновления (я вижу, что местоположение пользователя получено и все необходимые обратные вызовы выполнены)

Я использую:

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation {

if ([annotation isKindOfClass:[MKUserLocation class]])
    return nil; //for some reason this is only being returned when the view is pushed and the get
                //location method is called but not when the same location method is called     
                //while the view already exists.

 }

и:

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

        NSLog(@"User location: %f, %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
        currentRegionLat = newLocation.coordinate.latitude; 
        currentRegionLng = newLocation.coordinate.longitude;
        CLLocationCoordinate2D coord = {latitude: newLocation.coordinate.latitude, longitude: newLocation.coordinate.longitude};
        MKCoordinateSpan span = {latitudeDelta: 0.006, longitudeDelta: 0.006};
        MKCoordinateRegion region = {coord, span};
        [mView setRegion:region];
        [self getCardsInLocationLat:newLocation.coordinate.latitude andLng:newLocation.coordinate.longitude]; //this is a function which sets the annotations 

}

Я понятия не имею, что могу делать неправильно.Пожалуйста помоги.Спасибо.

* ОБНОВЛЕНИЕ ** Мне удалось найти источник проблемы и обойти ее: Проблема заключалась в том, что я удалял все аннотации накарта перед выполнением обновления местоположения и по какой-то причине аннотация местоположения пользователя не добавлялась.Поэтому я просто удалил только все аннотации, не относящиеся к [MKUserLocation class], и оставил аннотацию местоположения пользователя.Это решило мою проблему, но я все еще думаю, что либо здесь есть какая-то ошибка с яблоком, либо я делаю что-то не так, чего пока не вижу.

1 Ответ

1 голос
/ 06 января 2011

Эй, почему бы вам просто не установить свойство MKMapView, showsUserLocation, на YES?

mapView.showsUserLocation = YES;

Таким образом, вам не нужно будет беспокоиться об обновлении местоположения.

Если вы не хотите использовать его в целях экономии заряда аккумулятора или чего-то еще, я думаю, нам нужно будет увидеть больше вашего кода. Код, который у вас есть, кажется, не в чем проблема. Вы получаете какие-либо ошибки в консоли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...