Tôi có một số MKMapView
có một vấn đề rất lạ và khó giải thích. Tôi có một số MKOverlay
được lưu giữa các phiên bằng cách lưu các điểm của lớp phủ vào một tệp và tải lớp phủ trong viewDidLoad
. Vì vậy, đây là vấn đề:MKOverlay phủ tất cả mọi thứ với các trường hợp lạ chỉ trên ios5?
bước
- tôi thêm một
MKOverlay
đếnMKMapView
- Trên đường chạy trốn thứ hai hoặc thứ ba sau khi thêm
MKOverlay
đến tất cả mọi thứ đồ trên bản đồ được overlayed bởi một lớp phủ cùng màu như một màu tôi đã thêm vào. Mọi thứ trên bản đồ ngoại trừ chế độ xem của bản đồ mà bạn có thể xem khi lượt xem được tải.
những điều kỳ lạ khác:
- Vấn đề này chỉ xảy ra khi
mapView.showsUserLocation
được thiết lập để đúng - Vấn đề này chỉ xảy ra trên
iOS5
. Mọi thứ hoạt động tốt trêniOS6
. - Nếu bạn thu nhỏ lớp phủ màu lại kích thước phần hiển thị của bản đồ để điền bản đồ ở cấp mới mà bạn đã thu nhỏ.
Anh chàng này đang gặp vấn đề tương tự, mặc dù giải pháp của anh ấy không hiệu quả đối với tôi.
Trouble with overlay using MKPolyline & MKPolylineView
Dưới đây là một số mã của tôi:
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = nil; //switch this to MKAnnotationView and use .image property if pins need to be images
if(annotation == self.startingPin || annotation == self.endingPin){
static NSString *defaultPinID = @"com.MagnusDevelopment.pin";
pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if (pinView == nil)pinView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID];
pinView.canShowCallout = YES;
pinView.animatesDrop = TRUE;
if(annotation == self.startingPin){
//starting pin
pinView.pinColor = MKPinAnnotationColorGreen;
}else{
//ending pin
pinView.pinColor = MKPinAnnotationColorRed;
}
}
return pinView;
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolylineView *aView = [[MKPolylineView alloc] initWithPolyline:(MKPolyline *)overlay];
aView.lineWidth = 7.0;
aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.6];
return aView;
}
Mã gọi khi tải xem, tôi đã đăng nhập tọa độ đang được bổ sung vào mảng polyline ngay trước khi chúng được thêm vào, và mọi thứ đều ổn và dandy!
NSInteger numberOfSteps = pointsArray.count;
NSLog(@"number of steps: %i",numberOfSteps);
CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
CLLocation *location = [pointsArray objectAtIndex:index];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[self.mainMap addOverlay:polyLine];
Dưới đây là một bức tranh về những gì sẽ xảy ra khi lớp phủ xuất hiện và chảo dùng sang một bên trên bản đồ: Bất kỳ ý tưởng về vấn đề này là gì?
Sự cố vẫn xảy ra .... – Shredder2794
Hm, khi nào bạn tạo bản đồ và đường? Vì bạn đã nói điều đó chỉ xảy ra khi vị trí của người dùng được bật, hãy thử tạo bản đồ và các đường polylines trong khi xemWillAppear chế độ xem vùng chứa của bản đồ, sau đó đặt các bản đồ hiển thịTiểu sử của người dùng thành CÓ trong chế độ xemDidAppear. – poetmountain
Công trình này hoạt động! Cảm ơn bạn rất nhiều! Bạn nên chỉnh sửa câu trả lời của mình để phù hợp với câu trả lời bạn đã đưa cho tôi trong các nhận xét này cho những người tương lai gặp sự cố này! – Shredder2794