1

我正在尝试显示我当前位置的位置和随机 5 点,如下所示:

- (void)viewDidLoad {
    [super viewDidLoad];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    [locationManager startUpdatingLocation];
    otherlat = [NSNumber numberWithDouble:[currentLatitude doubleValue]];
    otherlong = [NSNumber numberWithDouble:[currentLongitude doubleValue]];

    [self.mapView setShowsUserLocation:YES];
    mapView.delegate = self;

    longi = [[NSMutableArray alloc] init];
    lati = [[NSMutableArray alloc] init];

    NSMutableArray *la = [[NSMutableArray alloc] init];
    NSMutableArray *lo = [[NSMutableArray alloc] init];
    la = [NSMutableArray arrayWithObjects:@"20", @"21", @"42", @"51", @"75", nil];
    lo = [NSMutableArray arrayWithObjects:@"60", @"21", @"82", @"181", @"35", nil];

    for (int x = 0; x < [la count]; x++) {
        otherlat = [NSNumber numberWithDouble:[[la objectAtIndex:x] doubleValue]];
        otherlong = [NSNumber numberWithDouble:[[lo objectAtIndex:x] doubleValue]];
        [longi addObject:otherlong];
        [lati addObject:otherlat];
    }

    myAnnotation *myAnnotation1 = [[myAnnotation alloc] init];
    for (int y = 0; y < [lati count]; y++) {  
        CLLocationCoordinate2D theCoordinate;
        theCoordinate.latitude = [[lati objectAtIndex:y] doubleValue];
        theCoordinate.longitude = [[longi objectAtIndex:y] doubleValue];

        myAnnotation1.coordinate = theCoordinate;
        [mapView addAnnotation:myAnnotation1];
    }
}

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]])
    return nil;

    static NSString *myAnnotationIdentifier = @"AnnotationIdentifier";
    MKPinAnnotationView *customPinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:myAnnotationIdentifier];
    customPinView.image = [UIImage imageNamed:@"purplepin.png"];
    customPinView.animatesDrop = YES;
    customPinView.canShowCallout = YES;

    return customPinView;
}

但是,地图视图仅显示我当前的位置,而其他 5 个位置均不显示。我不明白为什么它没有显示其他 5 个位置,因为我这样做了

  [mapView addAnnotation:myAnnotation1];
4

1 回答 1

1

您只需添加 1 个注释。你做了5次,但你总是覆盖以前的坐标。

//only 1 is allocated and then used/modified in every iteration of the loop!
myAnnotation* myAnnotation1=[[myAnnotation alloc] init];
for (int y =0; y < [lati count]; y++) {  
    ....

您需要创建的不是 1 个 myAnnotation1,而是...... 5 个单独的:

//allocate & add in each iteration of the loop!
for (int y =0; y < [lati count]; y++) {  
    myAnnotation* myAnnotation1=[[myAnnotation alloc] init];
    ....
于 2013-05-19T02:15:12.330 回答