我正在与这些该死的折线作斗争......</p>
我仍然无法在我的地图上显示它!
我实现了:
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];
(请注意,这些点是在githubNVPolyline
上的存储库中使用的点。首先我尝试使用这些类,但我也无法显示折线......)
然后我做(像这里):
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