【问题标题】:CLLocationCoordinate2D to MKAnnotationCLLocationCoordinate2D 到 MKAnnotation
【发布时间】:2012-07-20 01:26:01
【问题描述】:

我有一个 MapView,我正在尝试在当前坐标处添加注释。

viewWillAppear 中的我的代码:

CLLocationCoordinate2D location;
location.latitude = [maps.barLat doubleValue];
location.longitude = [maps.barLong doubleValue];
[_mapView addAnnotation:location];

我在addAnnotation 上收到一条错误消息,上面写着

将 CLLocationCoordinate2D 发送到不兼容类型 MKAnnotation 的参数。

我看到的所有其他示例都没有问题,我缺少什么?

【问题讨论】:

    标签: iphone ios xcode mapkit core-location


    【解决方案1】:

    如果您查看 Apple's API docsaddAnnotation: 方法采用 id<MKAnnotation>,而不是 CLLocationCoordinate2D。这就是你的错误的原因。

    如果您只想要一个简单的注释,没有任何花哨的花里胡哨,只需这样做:

    CLLocationCoordinate2D location;
    location.latitude = [maps.barLat doubleValue];
    location.longitude = [maps.barLong doubleValue];
    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
    annotation.coordinate = location;
    [_mapView addAnnotation: annotation];
    

    然而,大多数人最终会创建自己的类来实现MKAnnotation 协议,以提供自定义注释。但是,如果你只需要一个别针,上面的方法就可以了。

    【讨论】:

    • 感谢MKPointAnnotation,因为我只需要创建一个点并且不需要单独的类。我添加了annotation.title = maps.barName; 并且它有效,知道如何在地图显示后立即显示它吗?
    • @user1454340,地图一显示注释就没有出现?您在viewDidLoadviewWillAppear 中使用上面的代码?或者您是在问是否可以自动显示标题的标注?为此,see this stack overflow answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2013-09-25
    • 2013-07-19
    • 1970-01-01
    • 2019-05-23
    相关资源
    最近更新 更多