我正在地图视图中加载注释。加载地图时,注释显示为引脚。
但是,标题和副标题不会自动出现在引脚上。目前,用户需要在标题显示之前点击图钉。
加载地图时,有没有办法让标题在引脚上自动显示?
(这个问题几乎是一样的,但不完全相同:To display the title for the current loaction in map in iphone因为我已经在我的对象中定义了-title和-subtitle属性。)
由于
答案 0 :(得分:16)
要调用的方法是来自MKMapView的“selectAnnotation:animated”。
答案 1 :(得分:9)
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
MKAnnotationView *annotationView = [views objectAtIndex:0];
id<MKAnnotation> mp = [annotationView annotation];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate] ,350,350);
[mv setRegion:region animated:YES];
[mapView selectAnnotation:mp animated:YES];
}
如果您正在执行调用setRegion方法的相同操作,请确保调用
[mapView selectAnnotation:mp animated:YES];
后
[mv setRegion:region animated:YES];
答案 2 :(得分:0)
从iOS 11开始,有一种名为MKAnnotationView
的{{1}}新类型,可以在不被选中的情况下显示标题和副标题。查看https://developer.apple.com/documentation/mapkit/mkmarkerannotationview
MKMarkerAnnotationView
答案 3 :(得分:0)
添加一个后续答案(适用于Xcode 11.4和Swift 5),因为我遇到了这个确切的问题,但是上述答案不起作用。 @zsani是正确的,因为您需要使用MKMarkerAnnotationView
(而不是MKPinAnnotationView
)来同时获取两者,但是您还必须设置titleVisibility
和subtitleVisibility
属性(尽管titleVisibility
似乎默认与MKMarkerAnnotationView
一起打开)。
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
// do not alter user location marker
guard !annotation.isKind(of: MKUserLocation.self) else { return nil }
// get existing marker
var view = mapView.dequeueReusableAnnotationView(withIdentifier: "reuseIdentifier") as? MKMarkerAnnotationView
// is this a new marker (i.e. nil)?
if view == nil {
view = MKMarkerAnnotationView(annotation: nil, reuseIdentifier: "reuseIdentifier")
}
// set subtitle to show without being selected
view?.subtitleVisibility = .visible
// just for fun, show green markers where subtitles exist; red otherwise
if let _ = annotation.subtitle! {
view?.markerTintColor = UIColor.green
} else {
view?.markerTintColor = UIColor.red
}
return view
}
共享,以防其他人遇到同样的问题。