Tôi muốn một hình ảnh tải đồng bộ cho MKAnnotationView tùy chỉnh của mình; Tôi đã sử dụng khuôn khổ EGOImageView (nó đi rất tốt với UITableViews), nhưng tôi không làm cho nó hoạt động trên MKMapView. Hình ảnh dường như được tải, nhưng tôi không thể làm mới chúng trên bản đồ - [myMap setNeedsDisplay]
không làm gì cả.Làm mới MKAnnotationView trên MKMapView
Trả lời
Tôi đã không thử nó bản thân mình, nhưng nó có thể làm việc:
Nhận một cái nhìn cho chú thích bằng MKMapView - (MKAnnotationView *)viewForAnnotation:(id <MKAnnotation>)annotation
phương pháp và thiết lập hình ảnh mới với nó.
Edit: Cố gắng để làm điều đó bản thân mình và cách tiếp cận này làm việc tốt cho tôi:
// Function where you got new image and want to set it to annotation view
for (MyAnnotationType* myAnnot in myAnnotationContainer){
MKAnnotationView* aView = [mapView viewForAnnotation: myAnnot];
aView.image = [UIImage imageNamed:@"myJustDownloadedImage.png"];
}
Sau khi gọi phương pháp này tất cả hình ảnh chú thích đã được cập nhật.
Đây là cách duy nhất tôi đã tìm thấy để buộc vẽ lại của MKAnnotationViews:
// lực cập nhật xem bản đồ (nếu không xem chú thích sẽ không vẽ lại)
trung tâm CLLocationCoordinate2D = mapView.centerCoordinate;
mapView.centerCoordinate = center;
Dường như vô dụng, nhưng nó hoạt động.
tôi thấy chỉ có một cách đáng tin cậy để cập nhật chú thích, các phương pháp khác không làm việc cho tôi: chỉ cần loại bỏ và thêm chú thích một lần nữa:
id <MKAnnotation> annotation;
// ...
[mapView removeAnnotation:annotation];
[mapView addAnnotation:annotation];
Mã này sẽ thực hiện - [MapView: viewForAnnotation:] là được gọi lại và vì vậy chế độ xem chú thích của bạn sẽ được tạo lại (hoặc có thể được sử dụng lại nếu bạn sử dụng dequeueReusableAnnotationViewWithIdentifier) với dữ liệu chính xác.
tôi đã kết thúc bằng cách sử dụng kỹ thuật này để làm mới chú thích đơn – nurxyz
I đang cố gắng sử dụng phương pháp này, và SO muốn nó hoạt động, nhưng nó dường như không hoạt động đáng tin cậy tùy thuộc vào mức độ phóng to. Đôi khi pin xuất hiện bù đắp sang trái/phải bởi quá nhiều, và chú thích không còn nữa căn chỉnh.(Điều này là với hình ảnh pin có thay đổi tinh tế nhưng nếu không giống hệt nhau trong thành phần, với pin 'trung tâm' ở trung tâm của hình ảnh.) Hmm ... –
Yea Tôi đã tẻ nhạt addAnnotations tất cả một lần nữa để làm mới chúng. – coolcool1994
này làm việc cho tôi
#import "EGOImageView.h"
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
//ENTER_METHOD;
if([annotation isKindOfClass:[MKUserLocation class]]) return nil;
MKPinAnnotationView *annView;
static NSString *reuseIdentifier = @"reusedAnnView";
annView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5.0f, 0.0f);
annView.opaque = NO;
annView.image = [[UIImage imageNamed:@"tempImage.png"] retain];
YourModel *p = annotation; // make this conform to <MKAnnotation>
EGOImageView *egoIV = [[EGOImageView alloc] initWithPlaceholderImage:[UIImage imageNamed:@"tempImage.png"]];
[egoIV setDelegate:self];
egoIV.imageURL = [NSURL URLWithString:p.theUrlToDownloadFrom];
[annView addSubview:egoIV];
[egoIV release];
return [annView autorelease];
}
(tôi không thấy làm thế nào để chỉ ra rằng bài này gắn liền với của zerodiv câu trả lời.) Tôi đã có thể để có được zerodiv của phương pháp để làm việc bằng cách thêm một kickstart các loại, buộc một tọa độ vô nghĩa nhưng khác biệt, sau đó khôi phục lại một cái đúng, đúng. Màn hình không nhấp nháy vì vị trí đầu tiên.
CLLocationCoordinate2D center = mapView.centerCoordinate;
CLLocationCoordinate2D forceChg;
forceChg.latitude = 0;
forceChg.longitude = curLongNum;
mapView.centerCoordinate = forceChg;
mapView.centerCoordinate = center;
- 1. Phát hiện Tap trên CalloutBubble trong MKAnnotationView
- 2. MKAnnotationView không hiển thị trên bản đồ
- 3. vị một MKAnnotationView
- 4. Làm mới MKMapView sau khi di chuyển pin
- 5. iOS - Đặt chi tiết Tiết lộ Nút trên MKAnnotationView
- 6. MKMapView, animateDrop?
- 7. Làm cách nào để tạo hiệu ứng thả xuống MKAnnotationView?
- 8. Hiển thị MKRoute trên MKMapView trong iOS7
- 9. MKMapView MKPointAnnotation tap event
- 10. di chuyển/cập nhật MKOverlay trên MKMapView
- 11. MKAnnotation không hiển thị chú thích trên MKMapView
- 12. Nhận dùng hiện vị trí trên MKMapView
- 13. Cách đặt trung tâm xoay của MKAnnotationView
- 14. MKMapView bỏ qua cập nhật của centerOffset trong iOS 4
- 15. Vấn đề với chú thích chồng chéo (MKAnnotationView) trên bản đồ
- 16. Cách hiển thị nhiều chú thích từ MKAnnotationView?
- 17. Làm thế nào để tôi có được một hợp âm của MKAnnotationView?
- 18. MKAnnotationView biến mất trên swipe và nhấn đúp vào zoom
- 19. MKMapView Not Calling regionDidChangeAnimated trên Pan
- 20. Cách: Hiển thị MKOverlay trên MKMapView
- 21. didAddAnnotationViews không hoạt động trên MKMapView
- 22. subclassing MKAnnotationView và trọng setDragState
- 23. Nhanh chóng thêm ghim đơn vào MKMapView?
- 24. Tùy chỉnh chú thích MKAnnotationView
- 25. MKMapView: Nhận sự kiện được nhấp vào ghim chú thích
- 26. Hiển thị các hình ảnh Ghim khác nhau trong MKMapview
- 27. "_OBJC_CLASS _ $ _ MKAnnotationView", tham chiếu từ: ERROR
- 28. MKMapView và CLLocationManager
- 29. Lấy tọa độ của một điểm từ mkmapview trên iphone
- 30. MKMapView đặt khu vực
đó là cách thực hiện ngay bây giờ. Nhưng hình ảnh theo cách này được tải đồng bộ. – cocoapriest
Và nếu bạn gọi nó sau khi hình ảnh được tải và thiết lập hình ảnh này để xem - nó không hoạt động? – Vladimir
đó là câu hỏi - cách đặt hình ảnh này sau. Bằng cách đó, hình ảnh không được cập nhật trên MKAnnotationView – cocoapriest