-1

マップ ビューのカスタム アノテーションを作成します。地図にピンを配置すると、2 つのボタンで注釈が表示されます。iOS 6 では動作しますが、このコードを iOS 5 でテストすると、注釈が表示されません。

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

if ([annotation isKindOfClass:[MKUserLocation class]])
    return nil;  //return nil to use default blue dot view
NSLog(@"viewForAnnotation");
MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] 

    initWithAnnotation:annotation reuseIdentifier:@"loc"];
annotationView.draggable = YES;
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [button setTitle:@"Добавить" forState:(UIControlStateNormal)];

button.frame = CGRectMake(0, 0, 76, 23);
 if (plased == YES){
     annotationView.rightCalloutAccessoryView = button;
 }

[button addTarget:self action:@selector(fixPoint:) forControlEvents:(UIControlEventTouchUpInside)];


UIButton *buttonLeft = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[buttonLeft setTitle:@"Удалить" forState:(UIControlStateNormal)];
buttonLeft.frame = CGRectMake(0, 0, 66, 23);
[buttonLeft addTarget:self action:@selector(cancelPoint:) forControlEvents:(UIControlEventTouchUpInside)];
if (plased == YES){
    annotationView.leftCalloutAccessoryView = buttonLeft;
}
annotationView.tag = [geoPointsList count]+1;
annotationView.canShowCallout = YES;

return annotationView;
    }
4

1 に答える 1

0

ここに、カスタム AnnotationView を作成する方法の簡単な例を示します。

カスタムを作成AnnotationView:

#import <MapKit/MapKit.h>

@interface AnnotationView : MKPlacemark

@property (nonatomic, readwrite, assign) CLLocationCoordinate2D coordinate;

@property (nonatomic, strong) NSString *title;
@property (nonatomic, strong) NSString *subtitle;

// you can put here any controllers that you want. (such like UIImage, UIView,...etc)

@end

そして.m file

#import "AnnotationView.h"

@implementation AnnotationView

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate addressDictionary:(NSDictionary *)addressDictionary
{
    if ((self = [super initWithCoordinate:coordinate addressDictionary:addressDictionary]))
    {
        self.coordinate = coordinate;
    }
    return self;
}

@end

// 関連する Annotation Add を使用#import "AnnotationView.h"します.m file:

CLLocationCoordinate2D pCoordinate ;
pCoordinate.latitude = LatValue;
pCoordinate.longitude = LanValue;

// Create Obj Of  AnnotationView class  

AnnotationView *annotation = [[AnnotationView alloc] initWithCoordinate:pCoordinate addressDictionary:nil] ;

    annotation.title = @"I m Here";
    annotation.subtitle = @"This is Sub Tiitle";

[self.mapView addAnnotation:annotation];
于 2013-06-17T12:13:11.787 に答える