我正在用这些怪异的折线来对抗地狱......
我仍然无法在我的地图上显示它!
我实施了:
NSArray *points = [NSArray arrayWithObjects:
[[CLLocation alloc] initWithLatitude:45.43894 longitude:-73.7396],
[[CLLocation alloc] initWithLatitude:45.44073 longitude:-73.73998],
// 72 more like that…
nil];
(请注意,这些要点是github上NVPolyline
存放处使用的。
首先,我尝试使用这些类,但我无法显示折线......)
然后我做(如here):
int numPoints = [points count];
CLLocationCoordinate2D *arrayPtr = malloc(numPoints * sizeof(CLLocationCoordinate2D));
for(int i = 0; i<numPoints; i++) {
arrayPtr[i] = [[points objectAtIndex:i] coordinate];
}
polyline = [MKPolyline polylineWithCoordinates:arrayPtr count:numPoints];
[map addOverlay:polyline];
我没有添加折线叠加层,而是尝试了:
MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:polyline];
[map addSubview:polylineView];
先验,它应该有效,因为MKPolylineView
继承自UIView
,但它会崩溃。
这是日志:
-[CALayer levelsOfDetail]: unrecognized selector sent to instance 0x1d8319e0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CALayer levelsOfDetail]: unrecognized selector sent to instance 0x1d8319e0'
我已经通过故事板设置了我的委托,但我也尝试添加[map setDelegate:self];
,但没有任何变化。
我错在哪里以及为何?
感谢您的帮助和想法。
编辑,补充道:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id < MKOverlay >)overlay
{
if ([overlay isKindOfClass:[MKPolyline class]])
{
MKOverlayView *pView = [[MKOverlayView alloc] initWithOverlay:overlay];
return pView;
}
return nil;
}
仍然不行,我会白痴。
我也告诉你我的.h :(对我来说似乎不对)
@interface MapViewController : UIViewController <CLLocationManagerDelegate, MKMapViewDelegate>
{
MKPolyline *polyline;
}
@property (weak, nonatomic) IBOutlet MKMapView *map;
@end
答案 0 :(得分:0)
事实上,lineWidth
的{{1}}默认设置为0 ...
(查看MKOverlayPathView class reference)
首先我认为这是事情,但不是...... 重要的事情是设置MKOverlayPathView
。
因为我的strokeColor
导致我的应用崩溃(我不明白为什么),我必须使用[map addSubview:polylineView];
代替。
所以我补充道:
[map addOverlay:polyline];
感谢您的帮助@Kirualex:)。