我目前正在阅读iPhone编程The Big Nerd Ranch指南,并在第96页遇到一些问题。
我已正确分配了MKMapViewDelegate(经过多个委托测试),每个代表都会对所做的更改做出响应。但在这个代表期间:
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
MKAnnotationView *annotationView = [views objectAtIndex:0];
id<MKAnnotation> mp = [annotationView annotation];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 250, 250);
[mv setRegion:region animated:TRUE];
NSLog(@"Test");
}
控制台应在添加注释时记录该信息。但不知何故,它不会运行上述方法。
这是主文件
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
//[locationManager startUpdatingLocation];
[mapView setShowsUserLocation:TRUE];
[self.window makeKeyAndVisible];
return YES;
}
我想知道哪一部分是错的。 [mapView setShowUserLocation:TRUE]是否向地图添加注释?如果是,那怎么没有上述方法的反应呢?
答案 0 :(得分:1)
这是因为你还没有添加注释!显示用户位置的蓝色指示符不会被归类为注释。您可以通过简单地将红色图钉放到地图视图上来添加注释(触摸并按住地图)。
如果您想以编程方式为地图视图创建自己的注释,建议您先查看MKMapView class reference documentation中的“注释地图”部分并查看MKAnnotation protocol reference(如果您我不熟悉协议我强烈建议您也阅读这些协议!)您可以使用符合此协议的类MKPinAnnotationView的实例,并且可以使用addAnnotation:
添加注释 MKMapView 类的实例方法。
答案 1 :(得分:0)
Checkout Custom curent location Annotation pin not updating with core location之前我回答了类似的事情