gpt4 book ai didi

ios - 为当前位置注释设置 canShowCallOut = NO,iPhone

转载 作者:技术小花猫 更新时间:2023-10-29 10:06:25 27 4
gpt4 key购买 nike

我正在为当前位置图标使用自定义标注(标题和副标题)。我尝试按照以下方法禁用默认注释,但它不起作用。

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation
{
NSLog(@"viewForAnnotation");
if ([annotation isKindOfClass:[MKUserLocation class]])
{
MKAnnotationView *userLocationView = [mapView viewForAnnotation:annotation];
userLocationView.canShowCallout = NO;
NSLog(@"[annotation isKindOfClass:[MKUserLocation class]");
return nil;
}

}

唯一有效的方法是

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)ann
{
if([ann.annotation isKindOfClass:[MKUserLocation class]] )
{
[mymap deselectAnnotation:ann.annotation animated:NO];
}
}

但它有时会滞后。还有其他方法可以禁用当前位置注释的默认标注 View 吗?任何帮助将不胜感激。

最佳答案

要完成这项工作,需要获取当前位置的引用 MKAnnotationView。可以在任何地方获得此引用,但最好在确定用户位置后立即获得它。

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{
MKAnnotationView* annotationView = [mapView viewForAnnotation:userLocation];
annotationView.canShowCallout = NO;

}

或者使用下面的方法

 - (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;

}
}

如果想在运行时更改 canShowCallout 属性,则可以使用以下内容

for (AnnotationClass* annotation in mapView.annotations) 
{
if([annotation isKindOfClass:[MKUserLocation class]] )
{
MKAnnotationView* annotationView = [mapView viewForAnnotation:annotation];
annotationView.canShowCallout = NO;
}
}

关于ios - 为当前位置注释设置 canShowCallOut = NO,iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8442832/

27 4 0
文章推荐: css - 在
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com