我的客户需要在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;
}
当我点击标记时,我的滚动视图会显示,但滚动不起作用。我已经设置了内容大小但仍然无法正常工作。请帮帮我,
感谢。
答案 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];
}