ios - 让 GMSCircle 响应点击?

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

我正在使用适用于 iOS 的 Google Maps API,我想做到这一点,当您点击 GMSCircle 时,它​​会弹出一个我在别处编码的小东西。我已将圆圈设置为“可点击”,但我找不到我需要设置或制作的内容来聆听点击。我用什么?

    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_;

最佳答案

您需要使用委托(delegate)方法didTapOverlay :

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

这里参数overlay表示被点击的overlay。所以你需要检查它是否等于 circ。

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

GMSCircle 被添加到 map 时,相应的 GMSPolygon 也会被创建。如果圆被设置为可点击的,那么在点击它时,传递给 didTapOverlay 方法的叠加是这个相关的多边形而不是圆。因此,叠加层和圆圈之间的直接比较是不可能的。因此,正如 Raspu 指出的那样,您可以使用 circ.title = 在 title 中设置一个值,然后在 didTapOverlay 中,您可以检查 overlay.title 是否与 circ.title.这是有效的,因为圆的标题属性在相应的多边形内,因此将出现在叠加参数中。

关于ios - 让 GMSCircle 响应点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975273/

相关文章:

c# - C# 中的委托(delegate)和 F# 中作为第一类值的函数有什么区别?

android - 获取事件和指针位置

ios - 在 UILabel/UITextView 中获取文字

java - 在触摸监听器中执行工作,然后将其委托(delegate)给前一个监听器

ios - 我可以使用哪些工具来制作 iPhone 应用截屏视频?

iphone - 如何更改uitableview删除按钮文字

ios - 回到rootViewController,viewDidAppear在viewDidLoad之前被调用

ios - 在iOS 7中阻止传入的短信

ios - 在 Objective C 中使用双工(双向)委托(delegate)

c# - 为什么我们指定一个委托(delegate)和一个事件,为什么不在 C# 中使用一个事件?