我正在使用以下代碼將註釋添加到地圖視圖。問題是,註釋不會出現在iOS的7,但在iOS6的地圖註釋不會在iOS 7中顯示
在我viewDidLoad
方法都顯示出來:
for (int i=0; i<[self.listingNodesArray count]; i++) {
MyAnnotation* annotation= [MyAnnotation new];
CLLocationCoordinate2D coordinate;
coordinate.latitude = [[[[self.listingNodesArray objectAtIndex:i] objectForKey:@"address"] objectForKey:@"lat"] doubleValue];
coordinate.longitude = [[[[self.listingNodesArray objectAtIndex:i] objectForKey:@"address"] objectForKey:@"lng"] doubleValue];
annView.image = [UIImage imageNamed:@"PIN_img.png"];// sets image for pin
annotation.coordinate = coordinate;
annotation.title = [[self.listingNodesArray objectAtIndex:i] objectForKey:@"title"];
annotation.subtitle = [[[self.listingNodesArray objectAtIndex:i] objectForKey:@"address"] objectForKey:@"address"];
NSNumber *listingIdNumber = [[self.listingNodesArray objectAtIndex:i] objectForKey:@"id"];
annotation.catListingMapId = listingIdNumber;
[self.topMapView addAnnotation: annotation];
}
[self.view addSubview:self.topMapView];
和viewForAnnotation
:
- (MKAnnotationView *) mapView:(MKMapView *)mapingView viewForAnnotation:(id <MKAnnotation>) annotation {
annView = nil;
if(annotation != mapingView.userLocation)
{
static NSString *defaultPinID = @"";
annView = (MKAnnotationView *)[mapingView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if (annView == nil)
annView = [[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:defaultPinID] ;
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton setTitle:annotation.title forState:UIControlStateNormal];
// [rightButton addTarget:self
// action:@selector(showDetails:)
// forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView = rightButton;
annView.canShowCallout = YES;
}
return annView;
}
和我的註釋文件:
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface MapViewAnnotation : NSObject <MKAnnotation> {
NSString *title;
CLLocationCoordinate2D coordinate;
}
@property (nonatomic, copy) NSString *title;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d;
@end
#import "MapViewAnnotation.h"
@implementation MapViewAnnotation
@synthesize title, coordinate;
- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d {
title = ttl;
coordinate = c2d;
return self;
}
@end
請勿設置'annView.image' _outside_ viewForAnnotation方法。在設置附件視圖的同時設置委託方法。如果它在iOS 6中「有效」,那只是偶然。 – Anna