1

カスタム情報ウィンドウをGoogleマップマーカーに追加する方法に関するこのチュートリアルに従いました.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

そして、メイン画面とマップのView Controllerで

-(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;
}

助言がありますか?

4

1 に答える 1

1

まず、ボタンがクリックされない理由は、google-maps が UIView を取得して imageView としてレンダリングするため、ボタンが画像の一部であり、もちろんクリックできないためです。

解決策は、UIView を追加し、非表示/表示と配置を独自に処理することです。使用する代わりに

  • (UIView *)mapView:(GMSMapView *)p_mapView マーカーInfoWindow:(GMSMarker *)p_marker

私は didTapMarker を使用し、YES を返しました。

于 2013-08-26T01:35:51.330 に答える