MKMapView:自定义视图而不是注释引脚 [英] MKMapView: Instead of Annotation Pin, a custom view

查看:187
本文介绍了MKMapView:自定义视图而不是注释引脚的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆