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
,您必须具有名为 coordinate
、title
和 subtitle
的属性。您添加了三个额外的属性,ttcoordinate
、tttitle
和 ttsubtitle
,但 MKAnnotation
将忽略这些属性,并会查找 coordinate
、title
, 和 subtitle
.
您看不到注释的主要原因是您在 viewDidLoad
中设置了 ttcoordinate
。但是 MKAnnotation
不会使用那个,而是会引用您合成的 coordinate
属性,但从未设置。 (您确实有一个 initWithLocation
方法,这表明您要更新 coordinate
,但您从未调用过它。)
最重要的是,我建议将 ttcoordinate
、ttitle
和 ttsubtitle
重命名为 coordinate
、title
和 subtitle
,以及相应地更新所有这些参考资料,这应该可以解决所有问题。您可以停用 @synthesize
行。
我的地图在特定地点显示了图钉,但未显示图钉
这是代码
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
,您必须具有名为 coordinate
、title
和 subtitle
的属性。您添加了三个额外的属性,ttcoordinate
、tttitle
和 ttsubtitle
,但 MKAnnotation
将忽略这些属性,并会查找 coordinate
、title
, 和 subtitle
.
您看不到注释的主要原因是您在 viewDidLoad
中设置了 ttcoordinate
。但是 MKAnnotation
不会使用那个,而是会引用您合成的 coordinate
属性,但从未设置。 (您确实有一个 initWithLocation
方法,这表明您要更新 coordinate
,但您从未调用过它。)
最重要的是,我建议将 ttcoordinate
、ttitle
和 ttsubtitle
重命名为 coordinate
、title
和 subtitle
,以及相应地更新所有这些参考资料,这应该可以解决所有问题。您可以停用 @synthesize
行。