0

私はそれをプロトコルMyClassに準拠させています。ドキュメントMKAnnotationによると、インスタンスを返すプロパティを実装するにはクラスが必要です。私の最初の実装は次のようなものでした:coordinateCLLocationCoordinate2D

-(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/経度の値はすでに真/有効な地理座標ですか?
その場合、間違っているCLLocationCoordinate2DMake(lat,lon)のではなく、関数を使用する必要MKCoordinateForMapPoint(MKMapPointMake())があります。

于 2012-08-09T06:51:34.793 に答える