美文网首页
地图大头针气泡点击事件

地图大头针气泡点击事件

作者: BigBossZhu | 来源:发表于2017-06-20 10:21 被阅读175次

    地图大头针气泡点击事件

    项目中需要实现点击地图中大头针点击后出现气泡的点击事件,使用系统的方法一直没办法实现,最后发现一个很取巧的方案去解决了这个问题.

    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
        // If the annotation is the user location, just return nil.(如果是显示用户位置的Annotation,则使用默认的蓝色圆点)
        if ([annotation isKindOfClass:[MKUserLocation class]])
            return nil;
        if ([annotation isKindOfClass:[MKPointAnnotation class]]) {
            // Try to dequeue an existing pin view first.(这里跟UITableView的重用差不多)
            MKAnnotationView *customPinView = (MKAnnotationView*)[mapView
                                                                        dequeueReusableAnnotationViewWithIdentifier:@"CustomPinAnnotationView"];
            if (!customPinView){
                // If an existing pin view was not available, create one.
                customPinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];
    
            }
            //大头针的图标改变
            customPinView.image = [UIImage imageNamed:@"myimage"];
            //是否允许插入气泡
            customPinView.canShowCallout = YES;
            
            //实现气泡点击需要设置右侧的点击详情按钮,但是需要将创建的button类型设置为除默认类型如UIButtonTypeInfoLight,核心代码
            UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
            rightButton.frame = CGRectMake(0, 0, 2, 2);
            customPinView.rightCalloutAccessoryView = rightButton;
            customPinView.rightCalloutAccessoryView.backgroundColor = [UIColor whiteColor];
            return customPinView;
        }
        return nil;//返回nil代表使用默认样式
    }
    //气泡的点击事件
    -(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control{
        NSLog(@"点击了查看详情");
    }
    

    核心就是将rightCalloutAccessoryView设置的button创建类型修改为除了默认类型的其他类型.但是此处还有一个问题不能实现传值.通过运行时创建MKAnnotationView的分类动态添加属性解决传值的问题.当然也可以采用自定义气泡解决问题.

    参考代码地址:https://github.com/bosszhu/JXMapDemo

    相关文章

      网友评论

          本文标题:地图大头针气泡点击事件

          本文链接:https://www.haomeiwen.com/subject/ohroqxtx.html