我想在标注中显示当前位置的2行标签。 MKUserLocation而不是MKAnnotation 任何人都可以帮忙解决这个问题吗?
我确定可以使用自定义Callout ..但不确定如何为MKUserLocation创建它。
答案 0 :(得分:5)
在viewForAnnotation
方法中,你可以试试这个:
- (MKAnnotationView *)map:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>) annotation{
if(self._mapView.userLocation==annotation){
self._mapView.userLocation.title=@"some text";
self._mapView.userLocation.subtitle=@"some text";
return nil;
}
}
希望这有帮助。
答案 1 :(得分:3)
我假设您可以创建自定义注释标注,并希望使用而不是默认标注来进行用户位置。要完成这项工作,需要获取当前位置MKAnnotationView的参考。可以在任何地方获得此引用,但最好在确定用户位置后立即获取该引用。
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
MKAnnotationView* annotationView = [mapView viewForAnnotation:userLocation];
annotationView.canShowCallout = NO;
//your customization here
}
或使用以下方法
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
MKAnnotationView *aV;
for (aV in views) {
if ([aV.annotation isKindOfClass:[MKUserLocation class]]) {
MKAnnotationView* annotationView = aV;
annotationView.canShowCallout = NO;
//your customization here
}
}
}
如果想在运行时更改canShowCallout
属性,则可以使用以下
for (AnnotationClass* annotation in mapView.annotations)
{
if([annotation isKindOfClass:[MKUserLocation class]] )
{
MKAnnotationView* annotationView = [mapView viewForAnnotation:annotation];
annotationView.canShowCallout = NO;
//your customization here
}
}