2009/11/22

[Objective-C][iPhone sdk][google maps]pinを表示その1

まだ完全にできていないので、その1として

地図上にピンを表示させます。
プログラムは下記をご覧ください。

/* MapTestAppDelegate.m */
CLLocation *location = [[CLLocation alloc] initWithLatitude:35.660262 longitude:139.729548];
CLLocationCoordinate2D mapcenter = location.coordinate;
[location release];

AnnotationToMap *annotationtomap = [[[AnnotationToMap alloc] initWithCoordinate:mapcenter] retain];

MapView *mapview = [[MapView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
MKCoordinateSpan CoordinateSpan = MKCoordinateSpanMake(0.005,0.005);
MKCoordinateRegion CoordinateRegion = MKCoordinateRegionMake(mapcenter,CoordinateSpan);
[mapview setRegion:CoordinateRegion animated:YES];

[mapview addAnnotation:annotationtomap];
// Override point for customization after application launch
[window addSubview:mapview];
[window makeKeyAndVisible];

/* MapView.h */
#import <MapKit/MapKit.h>

@interface MapView : MKMapView <MKMapViewDelegate> {

}
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;

@end

/* MapView.m */
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{

MKPinAnnotationView *pinannotationview = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"];
pinannotationview.pinColor = MKPinAnnotationColorPurple;
pinannotationview.animatesDrop = YES;
return pinannotationview;

}

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

@interface AnnotationToMap : NSObject <MKAnnotation>{
CLLocationCoordinate2D coordinate;
}
-(id)initWithCoordinate:(CLLocationCoordinate2D) coord;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;

@end

#import "AnnotationToMap.h"


/* AnnotationToMap.m */
@implementation AnnotationToMap
@synthesize coordinate;

-(id)initWithCoordinate:(CLLocationCoordinate2D) coord{
self = [super init];
coordinate = coord;
return self;
}

@end

実行結果はこのようになりました。
Photobucket
ピンは表示できたけど、ピンの色が紫色になっていないので、バグが発生しています。

今、調査中ですが、おそらくViewControllerを使わないといけないのかもしれません。

0 コメント:

コメントを投稿