[英]Cannot display MKPolyline on the map
我正在用折斷折線的方法來戰斗……
我仍然無法在地圖上顯示它!
我實現了:
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
存儲庫中使用的那些點。首先,我嘗試使用這些類,但也無法顯示折線…)
然后我做(就像這里 ):
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];
設置了我的代表,但是我也嘗試添加[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
哈哈開個玩笑!
實際上, MKOverlayPathView
的lineWidth
默認設置為0…
(檢查MKOverlayPathView類參考 )
首先,我認為這是問題,但事實並非如此…… 重要的是設置了strokeColor
。
並且因為我的[map addSubview:polylineView];
使我的應用崩潰(我不知道為什么),我必須使用[map addOverlay:polyline];
代替。
所以我補充說:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolylineView *thePolylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
thePolylineView.strokeColor = [UIColor purpleColor]; // <-- So important stuff here
thePolylineView.lineWidth = 5.0;
return thePolylineView;
}
感謝您的幫助@Kirualex :)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.