Pin 无效

The Pin is not working

我的地图在特定地点显示了图钉,但未显示图钉

这是代码

WadiRumViewControllerJordan.h

#import <UIKit/UIKit.h>
#include <MapKit/MapKit.h>

@interface WadiRumViewControllerJordan : UIViewController

@property (strong, nonatomic) IBOutlet MKMapView *WadiRumMapView;
@end

WadiRumViewControllerJordan.m

#import "WadiRumViewControllerJordan.h"
#import "WadiRumNSOjectPIN.h"

@interface WadiRumViewControllerJordan ()


@end
//Wadi Rum Coordinates
#define WadiRum_Latitude 29.537355
#define WidiRum_longtitude 35.415026

//Wadi Rum Span
#define WadiRumSpan 0.01f;


@implementation WadiRumViewControllerJordan
@synthesize WadiRumMapView;

- (void)viewDidLoad {
    [super viewDidLoad];
    //Create WadiRum Region
    MKCoordinateRegion WadiRumRegion;

    //Center
    CLLocationCoordinate2D center;
    center.latitude = WadiRum_Latitude;
    center.longitude = WidiRum_longtitude;

    //Span
    MKCoordinateSpan span;
    span.latitudeDelta = WadiRum_Latitude;
    span.longitudeDelta = WidiRum_longtitude;

    WadiRumRegion.center = center;
    WadiRumRegion.span = span;

    //Set our map
    [WadiRumMapView setRegion:WadiRumRegion animated:YES];

    //WadiRumNSObjectPIN
    //1. Create a coordinate for the use of WadiRum
    CLLocationCoordinate2D WadiRumLocation;
    WadiRumLocation.latitude = WadiRum_Latitude;
    WadiRumLocation.longitude = WidiRum_longtitude;

    WadiRumNSOjectPIN * WadiRumAnnitation = [[WadiRumNSOjectPIN alloc] init];
    WadiRumAnnitation.coordinate = WadiRumLocation;
    WadiRumAnnitation.title = @"Services";
    WadiRumAnnitation.subtitle = @"Desert";



    {[self.WadiRumMapView addAnnotation:WadiRumAnnitation];

    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be WadiRumNSOjectPIN
}



@end

WadiRumNSOjectPIN.h

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

@interface WadiRumNSOjectPIN : NSObject <MKAnnotation>

@property(nonatomic, assign) CLLocationCoordinate2D coordinate;
@property(nonatomic, copy) NSString * title;
@property(nonatomic, copy) NSString * subtitle;

@end

WadiRumNSOjectPIN.m

#import "WadiRumNSOjectPIN.h"

@implementation WadiRumNSOjectPIN
@synthesize coordinate;

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

@synthesize coordinate, title, subtitle;

@end

我编辑了上面的代码使其完全符合我的要求,我在下面的图片中得到了这个错误

为了符合 MKAnnotation,您必须具有名为 coordinatetitlesubtitle 的属性。您添加了三个额外的属性,ttcoordinatetttitlettsubtitle,但 MKAnnotation 将忽略这些属性,并会查找 coordinatetitle, 和 subtitle.

您看不到注释的主要原因是您在 viewDidLoad 中设置了 ttcoordinate。但是 MKAnnotation 不会使用那个,而是会引用您合成的 coordinate 属性,但从未设置。 (您确实有一个 initWithLocation 方法,这表明您要更新 coordinate,但您从未调用过它。)

最重要的是,我建议将 ttcoordinatettitlettsubtitle 重命名为 coordinatetitlesubtitle,以及相应地更新所有这些参考资料,这应该可以解决所有问题。您可以停用 @synthesize 行。