我正在为iPhone构建一个基于MapKit的应用程序。
我有一些MKPolylines添加到地图中。
但是,我希望将符合MKOverlay协议的模型类添加到映射中,而不是拥有MKPolyline,以便在mapView:viewForOverlay中创建相应视图时可以访问模型属性。
问题是我找不到从MKPolyline继承的方法,因为它没有任何可以从子类‘init’调用的初始化方法。您只能使用方便的方法创建它们。
如何将模型属性和MKPolyline行为结合在一起?
发布于 2011-03-04 22:40:31
你可以对这个类进行set an associated object attribute。这允许您将实例变量绑定到现有类。确保你在自己之后适当地清理干净。
发布于 2012-05-18 01:37:06
MANIAK_dobrii的代码是可行的,但我发现我必须实现一些额外的MKMultiPoint方法才能让它工作,下面是我使用的AnchorLine类的完整头文件和实现文件:
标题AnclLine.h
#import <MapKit/MapKit.h>
@interface AnchorLine : NSObject <MKOverlay> {
MKPolyline* polyline;
}
@property (nonatomic, retain) MKPolyline* polyline;
+ (AnchorLine*)initWithPolyline: (MKPolyline*) line;
@end实现AnclLine.m
#import "AnchorLine.h"
@implementation AnchorLine
@synthesize polyline;
+ (AnchorLine*)initWithPolyline: (MKPolyline*) line {
AnchorLine* anchorLine = [[AnchorLine alloc] init];
anchorLine.polyline = line;
return [anchorLine autorelease];
}
- (void) dealloc {
[polyline release];
polyline = nil;
[super dealloc];
}
#pragma mark MKOverlay
//@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
- (CLLocationCoordinate2D) coordinate {
return [polyline coordinate];
}
//@property (nonatomic, readonly) MKMapRect boundingMapRect;
- (MKMapRect) boundingMapRect {
return [polyline boundingMapRect];
}
- (BOOL)intersectsMapRect:(MKMapRect)mapRect {
return [polyline intersectsMapRect:mapRect];
}
- (MKMapPoint *) points {
return [polyline points];
}
-(NSUInteger) pointCount {
return [polyline pointCount];
}
- (void)getCoordinates:(CLLocationCoordinate2D *)coords range:(NSRange)range {
return [polyline getCoordinates:coords range:range];
}
@end希望这能帮助到一些人。
发布于 2011-03-04 06:38:26
MKPolyline确实没有自己的初始化方法。事实上,在MKPolyline的继承链中,唯一有初始化方法的类是NSObject。
因此,当我创建MKPolyline的子类时,我只是覆盖了NSObject定义的init方法...
-(id) init {
self = [super init];
if(self) {
//my initialization here
}
return self;
}然后,当你想用坐标实例化你的子类时,你可以这样做…
-MyPolyline* myPolyline = (MyPolyline*)[MyPolyline polylineWithCoordinates:coordinates count:coordinateCount];https://stackoverflow.com/questions/4949069
复制相似问题