长按注释时,注释图像会被 RedPushPin 替换

发布于 2025-01-05 12:24:21 字数 1079 浏览 1 评论 0原文

我创建了自定义注释,如下所示:

-(MKAnnotationView*)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation 
{
    MKPinAnnotationView *view = nil;
    if (annotation != mapView.userLocation)
    {
        view = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"myAnnotationIdentifier"];
        if (!view) 
            view = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"myAnnotationIdentifier"];

        if (((CustomAnnotation *)annotation).annotationType == 1)
        {
            view.image = [UIImage imageNamed:@"type1.png"];
            view.rightCalloutAccessoryView = nil;
            view.canShowCallout = YES;
        }
        else
        {
            view.image = [UIImage imageNamed:@"type2.png"];
            view.rightCalloutAccessoryView = nil;
            view.canShowCallout = YES;
        }
    }
return view;
}

问题:当用户在任何注释图像(类型 1 或类型 2)上按住 2 秒时,图像将被红色 PushPin 替换(iPhone MKPinAnnotationView 的默认值)。

我想避免这种替换。我怎样才能这样做呢?

I have created Custom Annotation with following:

-(MKAnnotationView*)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation 
{
    MKPinAnnotationView *view = nil;
    if (annotation != mapView.userLocation)
    {
        view = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"myAnnotationIdentifier"];
        if (!view) 
            view = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"myAnnotationIdentifier"];

        if (((CustomAnnotation *)annotation).annotationType == 1)
        {
            view.image = [UIImage imageNamed:@"type1.png"];
            view.rightCalloutAccessoryView = nil;
            view.canShowCallout = YES;
        }
        else
        {
            view.image = [UIImage imageNamed:@"type2.png"];
            view.rightCalloutAccessoryView = nil;
            view.canShowCallout = YES;
        }
    }
return view;
}

Problem: When User press and hold for 2 seconds on any Annotation Image (type1 or type2), Image gets replaced by Red PushPin(Default for iPhone MKPinAnnotationView).

I want to avoid this replacement. How can I do so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖上的星空 2025-01-12 12:24:21

不要声明和创建 MKPinAnnotationView,而是声明并创建一个普通的 MKAnnotationView

MKPinAnnotationView 喜欢默认使用红色图钉,这就是它的用途。

Instead of declaring and creating an MKPinAnnotationView, declare and create a plain MKAnnotationView.

The MKPinAnnotationView likes to default to the red pin which is what it's for.

零崎曲识 2025-01-12 12:24:21

使用 didDeselectAnnotationViewdidSelectAnnotationView 并重新选择图像,如下所示:-

view.image = [UIImage imageNamed:@"type2.png"];

Use didDeselectAnnotationView and didSelectAnnotationView and reselect the image as you did by :-

view.image = [UIImage imageNamed:@"type2.png"];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文