MKMapView:自定义视图而不是注释引脚 [英] MKMapView: Instead of Annotation Pin, a custom view
问题描述
我想在我的 MKMapView
中显示一个图像,而不是一点 rock pin 。有人可以在这里提供一些有用的代码,或者说明怎么做?
I want to display an image in my MKMapView
instead of little rock pin. Can someone please put some helpful code here, or tell the way how to do it?
谢谢!
编辑
-(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 到在地图上,固定位置而不是默认的pin视图( rock pin shaped )。但我仍然得到该引脚的默认图像。
I am expecting my image pinks.jpg to be on the map, pinning the location instead of default pin view (rock pin shaped). But still I am getting the default image of the pin.
推荐答案
当您想将自己的图像用于注释视图时,你应该创建一个 MKAnnotationView
而不是 MKPinAnnotationView
。
When you want to use your own image for an annotation view, you should create an MKAnnotationView
instead of an MKPinAnnotationView
.
MKPinAnnotationView
是 MKAnnotationView
的子类,因此它有一个图像
属性,但它通常会覆盖它并绘制图像(这就是它的用途)。
MKPinAnnotationView
is a subclass of MKAnnotationView
so it has an image
property but it generally overrides that and draws a pin image (that's what it's for).
所以将代码更改为:
-(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
中。
Notice that animatesDrop
is also commented out since that property only exists in MKPinAnnotationView
.
如果你还是想让你的图像注释掉落,你必须自己做动画。您可以搜索Stack Overflow以获取animatesdrop mkannotationview,您将找到几个答案。以下是前两个:
If you still want your image annotations to drop, you'll have to do the animation yourself. You can search Stack Overflow for "animatesdrop mkannotationview" and you'll find several answers. Here are the first two:
- Is it possible to call animatesDrop in a MKAnnotationView rather than MKPinAnnotationView?
- How can I create a custom "pin-drop" animation using MKAnnotationView?
这篇关于MKMapView:自定义视图而不是注释引脚的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!