#import "ViewController7.h"
@interface ViewController7 ()
@end
@implementation ViewController7
@synthesize myMap;
- (void)viewDidLoad
{
-(MKAnnotationView *)myMap:(MKMapView *)myMap viewForAnnotation:(id <MKAnnotation>)annotation
{
MKPinAnnotationView *pinView =
[myMap dequeueReusableAnnotationViewWithIdentifiere:@"pinView"];
if (!pinView)
{
pinView = [[MKPinAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:@"pinView"];
pinView.pinColor= MKPinAnnotationColorRed;
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinView.rightCalloutAccessoryView = rightButton;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
[self GUmap];
[super viewDidLoad];
}
-(void) GUmap
{
myMap.mapType= MKMapTypeStandard;
MKCoordinateRegion newRegion;
newRegion.center.latitude= 000000;
newRegion.center.longitude= 00000;
newRegion.span.latitudeDelta= 000000;
newRegion.span.longitudeDelta= 000000;
CLLocationCoordinate2D coordinate;
coordinate.latitude= 00000;
coordinate.longitude= 0000000;
MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
[annotation setCoordinate:coordinate];
[annotation setTitle:@"HI"];
[annotation setSubtitle:@"Welcome!!"];
[self.myMap removeAnnotations:self.myMap.annotations];
[self.myMap addAnnotation:annotation];
[self.myMap setRegion:newRegion animated:YES];
}
@end
除了代码 - (MKAnnotationView *)myMap之外,一切正常 它给了我错误(无效的参数类型:MKAnnotationView到一元表达式) 我尝试了一切但没有任何效果 请帮忙...谢谢
答案 0 :(得分:1)
问题是您尝试将myMap:viewForAnnotation:
方法放在viewDidLoad
方法中。不要那样做。
应该是:
-(MKAnnotationView *)myMap:(MKMapView *)myMap viewForAnnotation:(id <MKAnnotation>)annotation
{
MKPinAnnotationView *pinView =
[myMap dequeueReusableAnnotationViewWithIdentifiere:@"pinView"];
if (!pinView)
{
pinView = [[MKPinAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:@"pinView"];
pinView.pinColor= MKPinAnnotationColorRed;
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinView.rightCalloutAccessoryView = rightButton;
}
else
{
pinView.annotation = annotation;
}
return pinView;
}
- (void)viewDidLoad
{
[self GUmap];
[super viewDidLoad];
}
答案 1 :(得分:0)
第一个问题是viewForAnnotation
方法的代码是里面的 viewDidLoad
方法。这就是“无效参数类型...一元表达式”错误的原因 - 编译器很困惑。
将viewForAnnotation
方法移到viewDidLoad
之外。
修复第一个问题后,您将获得第二个问题,dequeueReusableAnnotationViewWithIdentifiere
是错误的方法名称。它应该是dequeueReusableAnnotationViewWithIdentifier
(最后没有e
)。
修复前两个后你会得到的第三个问题是viewForAnnotation
方法的名称是错误的。现在,它是myMap:viewForAnnotation:
。委托方法必须命名为mapView:viewForAnnotation:
。您可以更改内部参数的名称,但不能更改公共部分的名称。如果您不更改名称,地图视图将不会调用您的方法。
最后一期(也许)我应该指出的是,您可能需要设置实际纬度和经度以及非零范围,否则您的注释将位于大西洋。