许多引脚,如何区分每个引脚



请帮帮我,我被这个MapView:卡住了

我有一个MapView,在这个MapView下面有一个小标签。在MapView上,我有很多引脚(MKPinAnnotationView),我知道如何使用数组设置每个引脚的标题和副标题,但我不知道如何区分每个引脚。我的意思是,当用户点击一个引脚时,标签会显示被点击引脚的标题。

这是我的一些代码:

这就是我定义引脚的地方:

@implementation PlacePin
@synthesize coordinate,title,subtitle;
@synthesize nTag;
- (id)initWithLocation:(CLLocationCoordinate2D)coord{   
    self = [super init];    
    if (self) {         
        coordinate = coord;     
    }
    return self;    
}
-(void)dealloc{
    [title release];
    [subtitle release];
    [super dealloc];
}
@end

这是我从服务器处理结果的地方:

- (void) resultCheck {
NSString *strUrl    = [NSString stringWithFormat:@"ServerAddress.com"];
NSLog(@"MapView - resultCheck: url: %@ ", strUrl);
NSURL *url          = [ NSURL URLWithString:strUrl];
//get the result from server
NSString *result    = [NSString stringWithContentsOfURL:url];
NSLog(@"MapView - resultCheck: result: %@", result);

NSDictionary *dictionary = [result JSONValue];
NSLog(@"MapView - resultCheck: dictionary: %@", dictionary);


//process the JSON, get two parameters: xPos, yPos 
NSDictionary *value1 = [dictionary valueForKey:@"result"];
NSDictionary *value2 = [value1 valueForKey:@"post"];

NSArray *arrXPos    = [value2 valueForKey:@"xPos"];         //array of xPos
NSArray *arrYPos    = [value2 valueForKey:@"yPos"];         //array of yPos
self.arrName        = [value2 valueForKey:@"name"];         //array of name
self.arrPlaceInfor  = [value2 valueForKey:@"place_info"];

NSLog(@"MapView - resultCheck: value1: %@",value1);
NSLog(@"MapView - resultCheck: value2: %@",value2);
NSLog(@"MapView - resultCheck: value3: %@",arrXPos);
NSLog(@"MapView - resultCheck: value4: %@",arrYPos);

//get the xPos and yPos 
for (int i = 0 ; i < [value2 count]; i++) {
    //display the place depended on the xPos and yPos
    CLLocationCoordinate2D location; 
    location.latitude   = [[ NSString stringWithFormat:@"%@",[arrXPos objectAtIndex:i]] doubleValue];
    location.longitude  = [[ NSString stringWithFormat:@"%@",[arrYPos objectAtIndex:i]] doubleValue];

    PlacePin *mapPoint  = [[PlacePin alloc] initWithLocation:location];
    //set the title and subtitle of the pin depending on the result from server
    mapPoint.title      = [ NSString stringWithFormat:@"%@",[self.arrName objectAtIndex:i]];
    mapPoint.subtitle   = [ NSString stringWithFormat:@"%@",[self.arrPlaceInfor objectAtIndex:i]];
    [mapView addAnnotation:mapPoint];
    [mapPoint release];

    mapPoint = nil;

}

}

这是我处理引脚和设置标签的地方——我被卡住的地方:(

    - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view NS_AVAILABLE(NA, 4_0){
    self.labelShortIntro.text = @"1111111111111";

}
//customize an annotation
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
    MKPinAnnotationView *annView    = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
    annView.pinColor                = MKPinAnnotationColorPurple;
    annView.animatesDrop            = TRUE;
    annView.canShowCallout          = YES;
    annView.calloutOffset           = CGPointMake(-5, 5);
    return annView;
}
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
    PlacePin *selectedPin       =     view.annotation;
    NSLog(@"Title = %@ Subtitle = %@",selectedPin.title,selectedPin.subtitle);
    self.labelShortIntro.text   =     [NSString stringWithFormat:@"Title = %@ Subtitle = %@",selectedPin.title,selectedPin.subtitle];
}

didSelectAnnotationView委托中:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    NSArray *selectedAnnotations = mapView.selectedAnnotations;
    for(PlacePin *ann in selectedAnnotations)
    {
        NSLog(@"%@",ann.title);
        self.labelShortIntro.text=ann.title;
    }
}

我希望这个代码能帮助你。

最新更新