3つの標準色のピンがロードされたマップがあります。これらのピンは、解析されて配列に格納されるxmlの値に基づいて色付けされます。
2つのボタンを持つセグメント化されたコントロールを追加したいと思います。
ボタン1は、緑色のピンのみを表示します。
ボタン2は、赤と紫のピンのみを表示します。
ピンの色ごとに3つの異なる配列を追加し、ピンの配列を削除する方法について読みましたが、1つの配列を維持したいと思います。可能であれば、これをどのように行いますか。セグメント化されたコントロールを実装する方法は知っていますが、それらをオンまたはオフにフィルタリングする方法に困惑しました。
これが私のforループです。これにより、ピンが作成され、正常に機能する3つの色が割り当てられます。
//Count the array of annotations and add them dynamically to the map.
for (int i = 0; i < locationArray.count; i++) {
myAnnotation =[[MyAnnotation alloc] init];
NSString *latString = [[locationArray objectAtIndex:i]xmlLat];
NSString *lonString = [[locationArray objectAtIndex:i]xmlLon];
type = [[locationArray objectAtIndex:i]xmlType];
imageId = [[locationArray objectAtIndex:i]xmlImageId];
address = [[locationArray objectAtIndex:i]xmlAddress];
email = [[locationArray objectAtIndex:i]xmlEmail];
phone = [[locationArray objectAtIndex:i]xmlPhone];
live = [[locationArray objectAtIndex:i]xmlLive];
form = [[locationArray objectAtIndex:i]xmlForm];
name = [[locationArray objectAtIndex:i]xmlName];
//Change the 0 to Active ticket and 1 to Closed 2 to False and 3 to Not Found and 4 to Other
if ([live isEqualToString:@"0"]) {
live = @"Active";
}
else if ([live isEqualToString:@"1"]){
live = @"Closed";
}
else if([live isEqualToString:@"2"]){
live = @"False";
}
else if ([live isEqualToString:@"3"]){
live = @"Not Found";
}
else if ([live isEqualToString:@"4"]){
live = @"Other";
}
double theLatitude = [latString doubleValue];
double theLongtitude = [lonString doubleValue];
userLocation.latitude=theLatitude;
userLocation.longitude=theLongtitude;
myAnnotation.coordinate=userLocation;
myAnnotation.title=[NSString stringWithFormat:@"%@", imageId];
myAnnotation.subtitle=[NSString stringWithFormat:@"%@", type];
//Setting pin colours here based on value from XML
if ([live isEqualToString:@"Active"]){
myAnnotation.pinColor = MKPinAnnotationColorGreen;
}else if ([live isEqualToString:@"Closed"]){
myAnnotation.pinColor = MKPinAnnotationColorRed;
}
else if ([live isEqualToString:@"Not Found"]){
myAnnotation.pinColor = MKPinAnnotationColorPurple;
}
[incidentsMap addAnnotation:myAnnotation];
}
そしてここに私のセグメント化されたコントロールがあります
-(IBAction)segmentedControl:(id)sender{
if (mapFilter.selectedSegmentIndex == 0) {
NSLog(@"Active");
}
else if (mapFilter.selectedSegmentIndex == 1){
NSLog(@"Closed");
//Remove Red and Purple Pins here from view when segmented control button button is touched.........................
}
else if (mapFilter.selectedSegmentIndex == 2){
UIAlertView *mapSelector = [[UIAlertView alloc]initWithTitle:@"Select Map Type" message:@"Choose from 3 map views" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Default", @"Hybrid", @"Satelite", nil];
[mapSelector show];
}
}