2014-02-20 67 views
0

進出口工作在一個MapView但它不顯示用戶的位置就像我想,也是引腳,我不知道該代碼是正確的,我覺得是的,所以我需要你的幫助。MapView不顯示位置和引腳?

繼承人用於顯示的變焦位置代碼:

- (void)viewDidLoad 
{ 
    self.MapView.showsUserLocation = YES; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 
    coordinateuser.latitude = self.MapView.userLocation.coordinate.latitude; 
    coordinateuser.longitude = self.MapView.userLocation.coordinate.longitude; 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coordinateuser, 1200, 1200); 
    double delayInSeconds = 2.0; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     [self.MapView setRegion:region animated:YES]; 
    }); 
    [super viewDidLoad]; 
} 

而且繼承人用於顯示MKPinAnnotationView的代碼,這是一個,我認爲是錯誤的:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{ 
static NSString *SFAnnotationIdentifier = @"SFAnnotationIdentifier"; 
    MKPinAnnotationView *pinView = 
    (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:SFAnnotationIdentifier]; 
    if (!pinView) 
    { 
     MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:SFAnnotationIdentifier]; 

     return annotationView; 
    } 
    else 
    { 
     pinView.annotation = annotation; 
    } 
    cmtlocation = CLLocationCoordinate2DMake(19.502519,-99.259779); 
    //UIImage *flagImage = [UIImage imageNamed:@"flag.png"]; 
    //annotationView.image = flagImage; 
    [annotation setCoordinate:cmtlocation]; 
    return pinView; 

} 

所以我將感謝您的幫助!謝謝!

回答

0

實際上,它比其他的答案說的話倒過來:

如果離隊返回nil,代碼創建一個空的MKAnnotationView
MKAnnotationView是空的默認所以註釋(包括用戶位置)是看不見的。在viewForAnnotation頂部,檢查是否annotationMKUserLocation類型和返回nil。對於其他註釋,如果您想使用自定義image,請創建MKAnnotationView。否則,創建(alloc + init)一個MKPinAnnotationView,它會自動提供一個pin圖像。

此外...

你甚至沒有叫addAnnotation爲您定製的註釋。你不應該設置註釋的coordinateviewForAnnotation方法。相反,你應該創建註釋對象(例如,在viewDidLoad),並設置其coordinatetitle,然後調用addAnnotation

此外,在viewDidLoad,您試圖訪問用戶位置設置showsUserLocationYES座標後立即。用戶位置不會立即可用。相反,移動setRegion調用didUpdateUserLocation委託方法(或只設置userTrackingModeMKUserTrackingModeFollow)。

0

我覺得你的代碼是錯誤的,因爲你的預期:如果

MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:SFAnnotationIdentifier]; 

不返回nil,返回只是一個註解視圖:

MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:SFAnnotationIdentifier]; 
return annotationView; 

否則,您嘗試設置屬性的一個nil對象:

pinView.annotation = annotation; 

然後做別的事情b安伏返回nil

cmtlocation = CLLocationCoordinate2DMake(19.502519,-99.259779); 
//UIImage *flagImage = [UIImage imageNamed:@"flag.png"]; 
//annotationView.image = flagImage; 
[annotation setCoordinate:cmtlocation]; 
return pinView; 
相關問題