如何添加scrollview作为信息窗口谷歌地图ios

时间:2014-05-20 12:50:37

标签: ios google-maps uiscrollview google-maps-sdk-ios

我的客户需要在google地图的信息窗口中添加更多信息,这些信息集成在我的app中。所以我决定使用滚动视图作为信息窗口。我正在使用方法 - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker ,用于在地图顶部表示我的滚动视图。

这是我的代码:

- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {


       self.propertyNameLabel.text = marker.title;

       self.addressLabel.text = marker.snippet;


      [self.scrollViewTest setContentSize:CGSizeMake(600.00, 610.00)];

      [self.searchMap addSubview:self.scrollViewTest];


      UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleMoreTap)];
     tapGestureRecognizer.numberOfTapsRequired = 1;
    [self.moreLabel addGestureRecognizer:tapGestureRecognizer];
    self.moreLabel.userInteractionEnabled = YES;
    [tapGestureRecognizer release];


    return YES;

}

当我点击标记时,我的滚动视图会显示,但滚动不起作用。我已经设置了内容大小但仍然无法正常工作。请帮帮我,

感谢。

2 个答案:

答案 0 :(得分:2)

从markerInfoWindow委托方法返回的视图不允许是交互式的。谷歌地图似乎只是拍摄视图的快照并将其添加为图像,因此按钮,滚动视图等不起作用。

解决方案是在didTapInfoWindowOfMarker中创建一个单独的视图,并将其作为子视图添加到主视图(也包含mapView的视图)。这确实会产生其他复杂性,因为它不以任何方式与mapView相关联,因此您需要自己管理关闭它等。

答案 1 :(得分:0)

使用错误的委托方法编辑信息表。

这行代码 [self.searchMap addSubview:self.scrollViewTest]; 将子视图添加到地图而不是信息窗口。

您应该使用此委托方法: -

-(UIView*)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker{
  //TODO: Custom your view here
  UIView * view =[[UIView alloc]init];
  return  view;
}

- (void)mapView:(GMSMapView *)mapView 
     didTapInfoWindowOfMarker:(GMSMarker *)marker{

 //TODO: Some logic to set the model that will be using after notification is posted
   [[NSNotificationCenter defaultCenter] postNotificationName:@"triggerActionLikeAButton" object:nil];
 }