3

複数のアノテーションをプロジェクトにコーディングしています。現在、私は30の注釈を持っており、成長しています。単一のアノテーションごとにannotation.hクラスとannotation.mクラスを作成する必要があるより簡単な方法があるかどうか疑問に思います。

現在、マップビューコントローラーで、注釈オブジェクトを作成して配列に配置しています。これは私にとってはうまく機能していますが、ご想像のとおり、大量の注釈があると、大量の注釈を管理するためのコードがたくさんあります。クラスの。

たとえば、アノテーションクラスの1つは次のようになります。

Annotation.h:

//Annotation.h

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface Annotation : NSObject {

}

@end

Annotation.m:

//Annotation.m

#import "Annotation.h"

@implementation Annotation

-(CLLocationCoordinate2D)coordinate;
{
    CLLocationCoordinate2D theCoordinate;
    theCoordinate.latitude = -45.866416;
    theCoordinate.longitude = 170.519931;
    return theCoordinate; 
}

-(NSString *)title
{
    return @"Title";
}

-(NSString *)subtitle
{
    return @"Subtitle";
}

-(void)dealloc
{
    [super dealloc];
}

@end

すべての注釈を含むCSVファイルを読み取るのが最善の方法だと考えています。どのオプションを選択しても、多くのコードを書き直すことになります。そのため、何かをする前にこの質問をします。誰か提案はありますか?

4

1 に答える 1

3

残念ながら、MapCalloutsサンプルアプリは、一般的なアノテーションクラスを実装する方法の良い例を提供していません。

MKAnnotationプロトコルを実装するクラスcoordinateは、座標を取得する設定可能なプロパティまたはカスタムinitメソッドを提供できます。

ただし、iOS 4.0を使用しているため、より簡単なオプションは、MKPointAnnotation設定可能なプロパティを提供する事前定義されたクラスを使用することです。例えば:

MKPointAnnotation *annot = [[MKPointAnnotation alloc] init];
annot.title = @"Title";
annot.subtitle = @"Subtitle";
annot.coordinate = CLLocationCoordinate2DMake(-45.866416, 170.519931);
[mapView addAnnotation:annot];
[annot release];

もちろん、注釈データはどこからでも取得でき、データをループしてマップ上に注釈を作成できます。

于 2011-05-16T00:28:57.590 に答える