繁体   English   中英

我无法使用经度和纬度在地图视图中添加注释

[英]I can't add annotations in the mapview by using latitude and longitude

我已经从xml文件中读取了经度和纬度,并且想在其中添加一些注释。 但是除了用户位置之外,没有添加任何其他内容。mapview.annotations的计数始终为空。这是我的代码:

    - (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];
    }


}       

这是MapInfo类:

    #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

然后这是委托方法

- (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;
}

我真的不知道为什么只能添加用户位置,请有人帮我!这困扰了我好几天了!

看来您可能忘记了设置mapView的委托。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM