如何在InfoWindow中包含一个按钮

时间:2013-08-06 22:23:44

标签: ios xcode google-maps google-maps-markers infowindow

关于如何将自定义信息窗口添加到谷歌地图标记,我跟着this tutorial, 在UIView中我添加了一个按钮并创建了一个IBAction但是当我点击它时没有任何事情发生

我的infoWindow视图代码如下所示

·H

#import <UIKit/UIKit.h>
#import "Details.h"

@interface MarkerInfoWindowView : UIView
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UILabel *label1;
@property (weak, nonatomic) IBOutlet UILabel *label2;
@property (weak, nonatomic) IBOutlet UIButton *btn1;

- (void) initializeWithDetails:(Details*)p_details;
@end

的.m

#import "MarkerInfoWindowView.h"

@implementation MarkerInfoWindowView

- (void) initializeWithDetails:(Details*)p_details
{
    if(self != nil)
    {
        self.imageView.image = [UIImage imageWithContentsOfFile:p_basicDetails.imageURL];
        self.label1.text = p_details.l1;
        self.label2.text =  p_details.l2;
    }
}

-(IBAction) btn1_Clicked:(id)sender
{
    NSLog(@"button clicked");
}
@end

然后在我的主屏幕控制器和地图中

-(MarkerInfoWindowView*) customInfoWindow
{
    if(_customInfoWindow == nil)
    {
        _customInfoWindow = [[[NSBundle mainBundle] loadNibNamed:@"MarkerInfoWindowView" owner:self options:nil] objectAtIndex:0];
    }

    return _customInfoWindow;
}

- (UIView *)mapView:(GMSMapView *)p_mapView markerInfoWindow:(GMSMarker *)p_marker
{   
    Details* temp = [[Details alloc] init];
    temp.l1 = @"L1";
    temp.l2 = @"L2";
    temp.imageURL = @"someImage.jpg";

    [self.customInfoWindow initializeWithDetails:temp];

    return self.customInfoWindow;
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

首先没有点击按钮的原因是因为google-maps采用UIView并将其渲染为imageView,因此该按钮是图像的一部分,当然不可点击。

解决方案是添加一个UIView并自己处理隐藏/显示和定位。 而不是使用

  • (UIView *)mapView:(GMSMapView *)p_mapView markerInfoWindow:(GMSMarker *)p_marker

我使用didTapMarker并返回YES;