0

我有MyClass符合MKAnnotation协议的。根据文档,需要类来实现coordinate应该返回CLLocationCoordinate2D实例的属性。我的第一个实现是这样的:

-(CLLocationCoordinate2D)coordinate{
   return MKCoordinateForMapPoint(MKMapPointMake(self.details.latitude, self.details.longitude));
}

但这没有用:每当我调用[self.mapView addAnnotation:instanceOfMyClass];它时,它根本就没有添加到 ! 的annotations数组中mapView

_coordinate因此,对我来说,解决方案是在其中定义一个实例变量MyClass并实现协议一致性,如下所示:

-(CLLocationCoordinate2D)coordinate
{
    _coordinate.latitude = self.details.latitude;
    _coordinate.longitude = self.details.longitude;
    return _coordinate;
}

现在起作用了。所以,这里的问题是为什么需要一个实例变量并且动态创建CLLocationCoordinate2D不起作用?

4

1 回答 1

0

您的 self.details.latitude/longitude 值是否已经是真实/有效的地理坐标?
在这种情况下,您应该使用该CLLocationCoordinate2DMake(lat,lon)功能而不是MKCoordinateForMapPoint(MKMapPointMake())哪个是错误的。

于 2012-08-09T06:51:34.793 回答