• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 删除用户位置注释上的选择图像

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:09:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有以下代码:

- (void)mapViewMKMapView *)mapView didSelectAnnotationViewMKAnnotationView *)annotation{
    annotation.image = [UIImage imageNamed"pinIconOn.png"];
}

- (void)mapViewMKMapView *)mapView didDeselectAnnotationViewMKAnnotationView *)annotation{
    annotation.image = [UIImage imageNamed"pinIconOff.png"];
}

但是,当我选择用户位置时,会出现图钉图标。如何将用户位置的选择注释设置为无效,但为所有其他注释启用?



Best Answer-推荐答案


在委托(delegate)方法中,您可以检查所选注解是否为 MKUserLocation 类型,如果是,则不要更改图像。

MKUserLocation 是用户位置注释的文档类。

在这些委托(delegate)方法中,第二个参数是 MKAnnotationView
该类具有属性annotation,它指向 View 所针对的底层注释模型对象。检查 annotation 属性的类型。

例如:

- (void)mapViewMKMapView *)mapView didSelectAnnotationViewMKAnnotationView *)annotation{
    
    if ([annotation.annotation isKindOfClass:[MKUserLocation class]])
    {
        //it's the user location, do nothing
        return;
    }
    
    annotation.image = [UIImage imageNamed"pinIconOn.png"];
}

- (void)mapViewMKMapView *)mapView didDeselectAnnotationViewMKAnnotationView *)annotation{

    if ([annotation.annotation isKindOfClass:[MKUserLocation class]])
    {
        //it's the user location, do nothing
        return;
    }
    
    annotation.image = [UIImage imageNamed"pinIconOff.png"];
}

另外两个建议:

  1. 不要在这些委托(delegate)方法中将参数命名为annotation。使用与文档中建议的名称相同的名称,即 view,因为这是参数的真正含义。它是注解的 view 对象——而不是注解 model 对象本身。这将使委托(delegate)方法中的代码不那么困惑。

    所以将 (MKAnnotationView *)annotation 更改为 (MKAnnotationView *)view 并且检查变为 if ([view.annotation isKindOfClass:[MKUserLocation class]] ).

  2. 理想情况下,您应该在调用这些委托(delegate)方法以及更改 View 上的图像时将“选定”状态存储在注释模型对象中。然后,在 viewForAnnotation 中,代码应该检查注解的状态,并使用与委托(delegate)方法相同的逻辑在其中设置图像(不同的图像取决于它是否“被选中”)否则,可能会发生什么是选择注释后,如果用户缩放/平移 map ,图像可能会恢复到 viewForAnnotation 中指定的值。

关于ios - 删除用户位置注释上的选择图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23400976/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap