Tôi muốn thêm hình ảnh tùy chỉnh vào chú thích của mình trên bản đồ. Và tôi đã thực hiện MapAnnotationView tùy chỉnh sau:IOS: Thêm hình ảnh vào tùy chỉnh MKAnnotationview
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@class POI;
@interface MapAnnotation : MKAnnotationView <MKAnnotation >
@property (nonatomic) CGFloat lat;
@property (nonatomic) CGFloat lon;
@property (nonatomic) CGFloat altitude;
@property (nonatomic, copy) NSString * title;
@property (nonatomic, copy) NSString * subtitle;
@property (nonatomic,retain) NSString *source;
@property (nonatomic,retain) UIImage *image;
@end
@implementation MapAnnotation
@synthesize coordinate;
@synthesize lat=_lat,lon=_lon,altitude= _altitude;
@synthesize subtitle= _subtitle, title= _title, source=_source, image =_img;
- (CLLocationCoordinate2D)coordinate;{
CLLocationCoordinate2D position;
if (_lat != 0.0 && _lon != 0.0) {
position.latitude = _lat;
position.longitude = _lon;
}else {
position.latitude=0.0;
position.longitude=0.0;
}
return position;
}
@end
-(void) mapDataToMapAnnotations{
NSMutableArray *toRemove = [NSMutableArray arrayWithCapacity:10];
for (id annotation in _map.annotations)
if (annotation != _map.userLocation)
[toRemove addObject:annotation];
[_map removeAnnotations:toRemove];
[_data removeAllObjects];
[_data addObjectsFromArray:[UDdelegate naturArray]];
if(_data != nil){
MapAnnotation * tmpPlace;
//for(NSDictionary * poi in _data){
for(POI* poi in _data){
tmpPlace = [[MapAnnotation alloc]init];
tmpPlace.title = [poi title];
tmpPlace.lat = [poi lat];
tmpPlace.lon = [poi lon];
tmpPlace.subtitle = [poi dist];
tmpPlace.image = [poi poiIcon];
[self.map addAnnotation:tmpPlace];
[_map setNeedsLayout];
}
}
}
Vấn đề là ghim là chuẩn redPin .... Tôi chắc chắn rằng các biểu tượng không phải là rỗng, đã kiểm tra điều đó.
Cảm ơn
Trong trường hợp của tôi, phương thức ủy nhiệm trên không được gọi, ngay cả khi tôi đã thêm đại biểu. (và cũng được gán nó như là mapView.delegate = self;) –
stack