【问题标题】:How to Make A Callout Appear for MKOverlay Region?如何使 MKOverlay 区域出现标注?
【发布时间】:2011-02-03 17:50:43
【问题描述】:

我使用手势识别器和给定叠加层的 boundingRect 来确定用户何时点击它。但是,我现在想在用户点击的覆盖区域上显示一个标注,就像它是如何为注释完成的一样。我必须将叠加层创建为注释才能完成此操作吗?谢谢。

【问题讨论】:

    标签: ios4 mkmapview overlay callouts


    【解决方案1】:

    如果您愿意,叠加层也是注释对象。

    来自Location Awareness Programming Guide:

    MKOverlay 协议符合 MKAnnotation 协议。因此,所有覆盖对象也是注释对象,并且可以在您的代码中被视为一个或两个。如果您选择将覆盖对象视为两者,则您有责任在两个地方管理该对象。如果要同时显示覆盖视图和注释视图,则必须在应用程序委托中同时实现 mapView:viewForOverlay: 和 mapView:viewForAnnotation: 方法。这也意味着您必须在地图的叠加层和注释数组中添加和删除对象。

    【讨论】:

    • 感谢您的提示,但是我对如何创建叠加层作为注释非常迷茫。你能提供这方面的示例代码吗? MKAnnotationView 的子类通常有一个 UIImage 作为变量,并且在 initWithAnnotation:reuseIdentifier: 方法中没有办法从多边形的宽度和高度(从传入的注释)动态指定框架的宽度和高度,是吗?谢谢。
    • MapCallouts 示例代码可能有帮助吗?它显示带有自定义标注的 MKAnnotations - developer.apple.com/library/ios/#samplecode/MapCallouts/…
    • 对我不起作用,我将 MKPolyLine 视为 MKAnnotation,但失败了。在我添加Annotation:到mapview之后,不触发回调 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation
    • 由于mapView:viewForAnnotation 是委托协议中的一个方法(developer.apple.com/library/ios/#documentation/MapKit/Reference/…),因此委托是一个有效的引用吗
    • 你能用一些具体的例子详细说明答案吗?我无法在叠加层顶部显示标注。
    猜你喜欢
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2014-04-06
    相关资源
    最近更新 更多