让GMSCircle响应点击?

时间:2013-07-31 16:00:30

标签: ios delegates touch listener google-maps-sdk-ios

我正在使用适用于iOS的谷歌地图API,我想这样做,当你点击GMSCircle时,它会弹出我在其他地方编码的小东西。我已将圆圈设置为“tappable”但我无法找到我需要设置或制作以收听水龙头的内容。我该用什么?

    CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(10,10);
GMSCircle *circ = [GMSCircle circleWithPosition:circleCenter
                                         radius:10];
circ.tappable = true;
[circ setFillColor:[UIColor colorWithRed:1 green:0 blue:0 alpha:.5]];

circ.map = mapView_;

1 个答案:

答案 0 :(得分:9)

您需要使用委托方法didTapOverlay

- (void) mapView: (GMSMapView *) mapView  didTapOverlay: (GMSOverlay *) overlay 

此处参数叠加层表示已点按的叠加层。所以你需要检查它是否等于circ。

编辑:添加有关如何在didTapOverlay中检查圈子的详细信息

GMSCircle添加到地图后,还会创建相应的GMSPolygon。如果将圆圈设置为tappable,则在点击它时,传递给didTapOverlay方法的叠加层是此相关多边形而不是圆圈。因此,无法直接比较叠加层和圆圈。因此,正如Raspu所指出的,您可以使用circ.title =在标题中设置值,然后在didTapOverlay中,您可以检查overlay.title是否与circ.title相同。这是因为圆的title属性在相应的多边形内,因此将出现在overlay参数中。