我要显示图像MKMapView而不是小 别针 。
MKMapView
有人可以在这里放置一些有用的代码,或告诉它怎么做吗?
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation: (id <MKAnnotation>)annotation { MKPinAnnotationView *pinView = nil; if(annotation != mapView.userLocation) { static NSString *defaultPinID = @"com.invasivecode.pin"; pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; if ( pinView == nil ) pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID]; pinView.pinColor = MKPinAnnotationColorGreen; pinView.canShowCallout = YES; pinView.animatesDrop = YES; pinView.image = [UIImage imageNamed:@"pinks.jpg"]; //as suggested by Squatch } else { [mapView.userLocation setTitle:@"I am here"]; } return pinView; }
我希望我的图片 pinks.jpg 会显示在地图上,而不是默认的图钉视图( 石头图钉形状 ),而是固定位置。但是我仍然得到该引脚的默认图像。
如果要将自己的图像用于注释视图,则应创建一个,MKAnnotationView而不是MKPinAnnotationView。
MKAnnotationView
MKPinAnnotationView
MKPinAnnotationView是的子类,MKAnnotationView因此具有image属性,但通常会覆盖该属性并绘制图钉图像(这就是它的作用)。
image
因此,将代码更改为:
-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation { MKAnnotationView *pinView = nil; if(annotation != mapView.userLocation) { static NSString *defaultPinID = @"com.invasivecode.pin"; pinView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; if ( pinView == nil ) pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID]; //pinView.pinColor = MKPinAnnotationColorGreen; pinView.canShowCallout = YES; //pinView.animatesDrop = YES; pinView.image = [UIImage imageNamed:@"pinks.jpg"]; //as suggested by Squatch } else { [mapView.userLocation setTitle:@"I am here"]; } return pinView; }
请注意,animatesDrop由于该属性仅存在于中,因此也将其注释掉 MKPinAnnotationView。
animatesDrop
如果仍然要删除图像批注,则必须自己制作动画。您可以在Stack Overflow中搜索“ animatesdrop mkannotationview”,并找到几个答案。