5
マップの注釈にカスタムイメージを追加したいとします。そして、私は次のカスタムMapAnnotationViewをした:IOS:カスタム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];
}
}
}
問題はピンが標準redPinであるということです....私は、アイコンがnullでないことを確信し、そのためにチェックしています。あなたはカスタムビューとMapKitデリゲートメソッドmapView:viewForAnnotation:
にサービスを提供する必要が
おかげ
私の場合、上記のデリゲートメソッドは呼び出されません。さらに、デリゲートを追加しました。 (また、mapView.delegate = self;として割り当てられます) –
stack