请帮助我,我坚持这个MapView
:
我在MapView
它下面有一个和一个小标签MapView
。上MapView
,我有很多引脚(MKPinAnnotationView
),我知道如何使用数组设置每个引脚的标题和副标题,但我不知道如何区分每个引脚。我的意思是当用户点击 pin 时,标签将显示被点击 pin 的标题。
这是我的一些代码:
这是我定义引脚的地方:
@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;
}