2012-06-27 2 views
0

xml 파일에서 위도와 경도를 읽었으므로 주석을 추가하고 싶습니다. 여기에 맵 인포 클래스입니다위도와 경도를 사용하여지도 뷰에 주석을 추가 할 수 없습니다.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    if (newLocation != nil) { 
     self.myLocation = newLocation; 
    } 


    mapView.region = MKCoordinateRegionMake(self.myLocation.coordinate, MKCoordinateSpanMake(0.005f, 0.005f)); 
    mapView.zoomEnabled = YES; 
    //mapView.showsUserLocation = YES; 
    mapView.centerCoordinate = self.myLocation.coordinate; 


    MKPointAnnotation *userLocation = [[MKPointAnnotation alloc] init]; 
    userLocation.coordinate = myLocation.coordinate; 
    userLocation.title = @"my position"; 
    userLocation.subtitle = @"my position now"; 
    [mapView removeAnnotations:mapView.annotations]; 

    [mapView addAnnotation:userLocation]; 
    [userLocation release]; 

    if ([self.positionArray count] < 5) { 
     NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"position" ofType:@"xml"]; 
     NSData *positionData = [[NSData alloc] initWithContentsOfFile:dataPath]; 

     NSXMLParser *parser = [[NSXMLParser alloc] initWithData:positionData]; 

     parser.delegate = self; 

     [parser parse]; 
    } 

    if (self.myLocation != nil) { 
     [self.manager stopUpdatingLocation]; 
    } 


}  

: 그리고 여기에 다음

#import <UIKit/UIKit.h> 
#import <CoreLocation/CoreLocation.h> 
#import <MapKit/MapKit.h> 
@interface MapInfo : NSObject<MKAnnotation> 
{ 
    NSString *subtitle; 
    NSString *title; 
    CLLocationCoordinate2D coordinate; 
} 

@property (nonatomic, copy) NSString *subtitle; 
@property (nonatomic, copy) NSString *title; 
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 

- (id)initWithCoordinate:(CLLocationCoordinate2D)location; 
- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate; 

@end 

그러나 사용자 위치를 제외하고, 그들 중 누구도 mapview.annotations의 added.The 수 없었다 항상 empty.Here 내 코드입니다 대리자 방법

입니다
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation 
{ 
    static NSString *AnnotationIdentifier = @"AnnotationIdentifer"; 
    MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier]; 
    if ([annotation isKindOfClass:[MapInfo class]]) { 
     if (pinView == nil) { 
      pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease]; 
     } 
     pinView.pinColor = MKPinAnnotationColorRed; 
     pinView.canShowCallout = YES; 
     pinView.animatesDrop = NO; 
    }else if([annotation isKindOfClass:[MKPointAnnotation class]]) 
    { 
     if (pinView == nil) { 
      pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease]; 
     } 
     pinView.pinColor = MKPinAnnotationColorPurple; 
     pinView.canShowCallout = YES; 
     pinView.animatesDrop = NO; 
    } 
    return pinView; 
} 

정말에만 사용자 위치를 추가 할 수있는 이유, 누군가가 나에게 그것은 며칠 동안 나를 귀찮게했다 !! 도와 줘요 몰라!

답변

0

mapView의 위임자를 잊어 버린 것처럼 보입니다.

관련 문제