【问题标题】:MKAnnotation display all pin titles without clickingMKAnnotation 无需点击即可显示所有图钉标题
【发布时间】:2012-07-05 09:46:33
【问题描述】:
我正在像这样以编程方式添加多个注释:
- (void)addAnnotations{
NSInteger i;
CLLocationCoordinate2D location;
for ( i = 0 ; i < [storeLatitude count] ; i ++ ){
location.latitude = [[storeLatitude objectAtIndex:i] floatValue];
location.longitude = [[storeLongitude objectAtIndex:i] floatValue];
MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:[listOfStores objectAtIndex:i] andCoordinate:location];
[self.mapView addAnnotation:newAnnotation];
[newAnnotation release];
}
}
是否可以在不点击它们的情况下显示所有图钉的标题?
【问题讨论】:
标签:
ios
mkannotation
mkannotationview
【解决方案1】:
声明一个数组来存储所有注解并使用MKMapView的setSelectedAnnotations:(NSArray *)方法
- (void)addAnnotations {
NSMutableArray *annotationArray = [[NSMutableArray alloc]init];
NSInteger i;
CLLocationCoordinate2D location;
for ( i = 0 ; i < [storeLatitude count] ; i ++ ) {
location.latitude = [[storeLatitude objectAtIndex:i] floatValue];
location.longitude = [[storeLongitude objectAtIndex:i] floatValue];
MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle: [listOfStores objectAtIndex:i] andCoordinate:location];
[annotationArray addObject:newAnnotation];
[self.mapView addAnnotation:newAnnotation];
}
[mapView setSelectedAnnotations:annotationArray];
}
【解决方案2】:
试试这个。它会自动显示标题。
-(void)mapView:(MKMapView *)mapView1 didAddAnnotationViews:(NSArray *)views
{
[self.mapView selectAnnotation:yourannotationpin animated:NO];
}
【解决方案4】:
找不到setSelectedAnnotations 的快速版本。下面显示了标题,但是对于多个移动目标,仅显示数组中最后一个的标题,直到didAdd 的下一次迭代。所以仍在寻找更通用/完整的解决方案。
func mapView(_ mapView: MKMapView, didAdd views: [MKAnnotationView]) {
for view in views {
if let annotation = view.annotation, let title = annotation.title {
print("displaying:\(title!)")
mapView.selectAnnotation( annotation, animated: true )
}
}
}
【解决方案5】:
不,这是不可能的。您必须单击 pin Annotation 才能显示标题。