【发布时间】:2013-05-11 09:51:30
【问题描述】:
我正在与这些该死的折线作斗争......
我仍然无法在我的地图上显示它!
我实现了:
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];
先验,它应该可以工作,因为MKPolylineViewinherit from 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
【问题讨论】:
-
你有崩溃日志吗?
-
您查看过 Apple 的 breadcrumb example 吗?它用于在地图视图上跟踪用户路径。您可以根据需要对其进行修改。
-
是的,我已经看过了,但我只得到了蓝点,仅此而已。我只能访问信息按钮。该应用程序仅此而已。很奇怪。
-
您是否正确实现了
viewForOverlay方法?我们可以看看吗? -
向
MKMapView添加折线后,地图实例会调用它的委托(您的viewController)来询问如何显示此折线。见stackoverflow.com/questions/10598322/…
标签: ios objective-c mkmapview mapkit mkpolyline