只有在我等待至少1分钟后才会显示地图

时间:2011-05-18 18:15:35

标签: ios mapkit

我有view1其中有button1,当用户点击button 1时,系统会跟踪用户的当前位置,并显示第二个视图view2在用户设置搜索参数并点击button2的情况下,点击button2后,会显示一个显示地图的视图view3

现在我的问题是,如果用户至少在点击button2之前等待1分钟,则地图显示得非常好,否则不会显示地图。 我view2的相关代码是:

    - (void)viewDidLoad {
//when this view is loaded, the user current location is tracked
        self.locationManager=[[CLLocationManager alloc]init];
        [locationManager setDelegate:self];
        [locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
        [locationManager startUpdatingLocation];
    }
    #pragma mark-
    #pragma mark CLLocationManagerDelegate
    -(void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
    fromLocation:(CLLocation *)oldLocation
    {
        float latitude=newLocation.coordinate.latitude;
        float longitude=newLocation.coordinate.longitude;
        TopStationAppDelegate *topStation=(TopStationAppDelegate *)[[UIApplication sharedApplication]delegate];
        topStation.latitudeUtilisateur=latitude;
        topStation.longitudeUtilisateur=longitude;
        NSLog(@"%f",latitude);
        NSLog(@"%f",longitude);
        [locationManager stopUpdatingLocation];

    }

view3中的代码产生问题:

-(void)viewWillAppear:(BOOL)animated
{  
//here is the problem:
//if the user wait 1 minute before coming to this view, I mean before clicking on button2
//this view shows the map pretty well, otherwise the map is not displayed and I got brown //screen  

    [mapView removeAnnotations:mapView.annotations];
    [mapView setMapType:MKMapTypeStandard];
    TopStationAppDelegate *topStation=(TopStationAppDelegate *)[[UIApplication      sharedApplication]delegate];
    latitudeOfUserLocation=topStation.latitudeUtilisateur;
    longitudeOfUserLocation=topStation.longitudeUtilisateur;
}

为什么我要等1分钟,我该怎么解决?

1 个答案:

答案 0 :(得分:0)

我假设您正在尝试根据提供的代码显示用户位置。您已创建CLLocationManager实例并要求其更新用户的当前位置。在调用委托方法之前,这需要一些时间。您可以在委托方法中设置应用委托的topStation.latitudeUtilisateurtopStation.longitudeUtilisateur

假设用户在检索这些值之前移动到下一个屏幕,则不会设置上述值。您在设置之前访问了-viewWillAppear中的数据,因此会得到陈旧或nil数据。试图显示此位置将无法正常工作。

如果您真的希望显示用户的位置,则无法使用MKMapView的{​​{1}}。将其设置为showsUserLocation并在委托的YES方法中处理位置更新。

如果我误解了您的问题,请告诉我。