当点击注释地图位置不缩放
When tap on Annotation Map location is not zoomed
我在下面的代表中使用了这个,并在注释中设置了图像。点击注释时,不会调用其 didselectannotation 委托。但是当我使用默认值时,它就可以工作了。请建议是否有人可以在这方面提供帮助。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
static NSString *defaultPinID = @"Annotation";
pinView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if ( pinView == nil )
pinView = [[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:defaultPinID];
UIImage *originalImage = [UIImage imageNamed:@"map.png"];
pinView.canShowCallout = YES;
pinView.image = [self drawImage:originalImage inRect:CGRectMake(0, 0, 106, 148)];
pinView.calloutOffset = CGPointMake(0, -5);
UIImageView *profileImageView = [[UIImageView alloc]init];
profileImageView.frame = CGRectMake(6, 7, 40, 40);
[profileImageView setImage:[UIImage imageNamed:@"user.png"]];
[profileImageView setBackgroundColor:[UIColor whiteColor]];
[self setRoundedAvatar:profileImageView toDiameter:40 atView:self.view];
[pinView addSubview:profileImageView];
我已经使用 PinView 的 gestureRecognizer 完成了此操作。
UITapGestureRecognizer *tapLocation = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRecognizerShouldBeginFocusMap:)];
tapLocation.numberOfTapsRequired=1;
[pinView addGestureRecognizer:tapLocation];
- (BOOL)gestureRecognizerShouldBeginFocusMap:(UIGestureRecognizer *)gestureRecognizer
{
MKMapRect visibleMapRect = self.mapView.visibleMapRect;
NSSet *visibleAnnotations = [self.mapView annotationsInMapRect:visibleMapRect];
for ( MyAnnotation *annotation in visibleAnnotations ){
[self setCenterCoordinate:annotation.coordinate zoomLevel:18 animated:YES];
}
return YES;
}
我在下面的代表中使用了这个,并在注释中设置了图像。点击注释时,不会调用其 didselectannotation 委托。但是当我使用默认值时,它就可以工作了。请建议是否有人可以在这方面提供帮助。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
static NSString *defaultPinID = @"Annotation";
pinView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if ( pinView == nil )
pinView = [[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:defaultPinID];
UIImage *originalImage = [UIImage imageNamed:@"map.png"];
pinView.canShowCallout = YES;
pinView.image = [self drawImage:originalImage inRect:CGRectMake(0, 0, 106, 148)];
pinView.calloutOffset = CGPointMake(0, -5);
UIImageView *profileImageView = [[UIImageView alloc]init];
profileImageView.frame = CGRectMake(6, 7, 40, 40);
[profileImageView setImage:[UIImage imageNamed:@"user.png"]];
[profileImageView setBackgroundColor:[UIColor whiteColor]];
[self setRoundedAvatar:profileImageView toDiameter:40 atView:self.view];
[pinView addSubview:profileImageView];
我已经使用 PinView 的 gestureRecognizer 完成了此操作。
UITapGestureRecognizer *tapLocation = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRecognizerShouldBeginFocusMap:)];
tapLocation.numberOfTapsRequired=1;
[pinView addGestureRecognizer:tapLocation];
- (BOOL)gestureRecognizerShouldBeginFocusMap:(UIGestureRecognizer *)gestureRecognizer
{
MKMapRect visibleMapRect = self.mapView.visibleMapRect;
NSSet *visibleAnnotations = [self.mapView annotationsInMapRect:visibleMapRect];
for ( MyAnnotation *annotation in visibleAnnotations ){
[self setCenterCoordinate:annotation.coordinate zoomLevel:18 animated:YES];
}
return YES;
}