使用 MKMapView 的 showUserLocation 属性
Posted
技术标签:
【中文标题】使用 MKMapView 的 showUserLocation 属性【英文标题】:Using the showUserLocation property of MKMapView 【发布时间】:2010-12-07 23:23:58 【问题描述】:我现在有一个应用程序,可以在地图上显示各种图钉。我尝试设置mapView.showsUserLocation = YES;
以显示用户的当前位置,但是这使我的应用程序崩溃(“程序收到信号:SIGABRT”)并显示以下错误消息:
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: *** -[MKUserLocation counter]: unrecognized selector sent to instance 0x10ad60
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[MKUserLocation counter]: unrecognized selector sent to instance 0x10ad60'
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: Stack: (...)
这有点令人困惑,因为我没有使用 MKUserLocation,或者这就是问题所在?
该应用确实将 CoreLocation 用于其他不相关的目的,但是当尚未使用 CoreLocation 时,该应用会以相同的方式做出响应。
如果有人可以提供帮助,那就太棒了!
谢谢 - 詹姆斯
【问题讨论】:
我的临时解决办法是添加一个新图钉并更改它的颜色,但当前位置图钉肯定可以使用吗? 感谢您提出这个问题。它最终也帮助了我! 【参考方案1】:请务必在此方法中包含以下内容:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
if ([annotation class] == MKUserLocation.class)
return nil;
...
我希望你现在已经解决了这个问题;)
【讨论】:
嘿,谢谢,我已经有一段时间没有做这个项目了,但我今晚晚些时候会试试,谢谢!! 是的,这就是修复,谢谢!希望这将帮助其他人在未来遇到同样的问题! 谢谢!我正在努力弄清楚为什么我会看到 [MKUserLocation type]: Invalid Selector Sent ... 我无法弄清楚为什么 MKUserLocation 会出现。在这里阅读您的答案后,我意识到这是蓝点!我正在关注的教程没有在地图上显示用户位置,因此在这种情况下这不是问题。【参考方案2】:感谢 Berend 回答问题并感谢 james.ingham 提出问题!几个月来我一直在寻找解决这个问题的方法,这个帖子为我解决了这个问题!
检查 MKUserLocation 引脚类型是最合乎逻辑的做法。但是谁记得在实现 viewForAnnotation 方法时这样做。即使您不打算在应用程序中使用 MKuserlocation,始终进行此检查以避免将来遇到问题也是安全的做法。
【讨论】:
以上是关于使用 MKMapView 的 showUserLocation 属性的主要内容,如果未能解决你的问题,请参考以下文章
在不移动 MKMapView 的情况下使用 UIScreenEdgePanGestureRecognizer
如果我不再使用它,为啥在释放 MKMapView 后我会崩溃?
使用 UIView 作为 MKMapView 子视图来绘制路线