MKPolyline仅在移动地图时显示
我有一个MKMapView
有一些引脚。 我用MKPolyline
视图连接引脚。 但是,只有当我移动地图时(MapView被更新时)才显示MKPolyline
。 我想从一开始就看到MKPolyline
。
请检查以下代码:
-(void)plotSnapPosition { for (id<MKAnnotation> annotation in myMapView.annotations) { [myMapView removeAnnotation:annotation]; } for (id<MKOverlay> overlay in myMapView.overlays) { [myMapView removeOverlay:overlay]; } NSArray *snaps = self.entry.snapsArray; CLLocationCoordinate2D *locations = malloc(sizeof(CLLocationCoordinate2D) * snaps.count); NSInteger counter = 0; for (Snap *snap in snaps) { locations[counter] = [snap coordinates]; CLLocationCoordinate2D c = [snap coordinates]; CAHAnnotation *annotation = [[CAHAnnotation alloc] initWithDate:snap.timeAsString coordinate:c counter:counter]; [myMapView addAnnotation:annotation]; counter++; } MKPolyline *polyline = [MKPolyline polylineWithCoordinates:locations count:snaps.count]; MKPolylineView *routeLineView = [[MKPolylineView alloc] initWithPolyline:polyline]; routeLineView.fillColor = [UIColor redColor]; routeLineView.strokeColor = [UIColor redColor]; routeLineView.lineWidth = 5; [myMapView setVisibleMapRect:polyline.boundingMapRect]; [self.myMapView addOverlay:polyline]; } -(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay { if ([overlay isKindOfClass:[MKPolyline class]]) { MKPolylineView *routeLineView = [[MKPolylineView alloc] initWithPolyline:overlay]; routeLineView.fillColor = [UIColor blueColor]; routeLineView.strokeColor = [UIColor blueColor]; routeLineView.lineWidth = 3; return routeLineView; } return nil; }
对于testing问题,我已经将方法-(void)plotSnapPosition
中的MKPolyline
的颜色设置为红色。 在代表我把它设置为蓝色。 移动地图后,只显示蓝色。
有人能帮我解决这个问题吗? 我认为这只是一个小错误。 谢谢。
这里是截图:
两个引脚
移动地图后:
移动地图之后的path
确保在添加叠加之前设置mapView的委托。 所以,在你的情况
mapView.delegate = self; [self plotSnapPosition];
您是否尝试在完成绘图时添加[overlayView setNeedsDisplay]调用?