检测Swift中的GMSPolyline?
我正在努力检测在我的Google地图上绘制的GMSPolyline上的一个水龙头,它用GMSpolygones工作得很好,但同样的方法似乎不适用于折线。 我目前的方法,适用于polygones,是:
if (GMSGeometryContainsLocation(coordinate, polygon.path!, false)) { ... }
任何build议如何检测折线上的水龙头? 或者只是靠近它?
根据他们的API 文档 , GMSPolyline
inheritance自GMSOverlay
,这意味着GMSPolyline
具有属性tappable
。 所以你想要这样的东西
let polyLine: GMSPolyline = GMSPolyline(path: newPath) polyLine.isTappable = true polyline.map = yourGoogleMap
然后你的GMSMapViewDelegate
应该用这个函数通知你在GMSPolyline
层内的任何地方
func mapView(_ mapView: GMSMapView, didTap overlay: GMSOverlay) { print("User Tapped Layer: \(overlay)") }
您可以使用isTappable
属性。
isTappable
如果这个叠加应该会导致点击通知。
polyline.isTappable = true
GMSPolyline
inheritance自GMSOverlay
。 所以要检测重叠覆盖GMSMapViewDelegate
提供了一个委托方法:
- mapView:didTapOverlay:在叠加被点击之后调用。
无论何时点击多段线, didTapOverlay
调用GMSMapViewDelegate
方法didTapOverlay
func mapView(_ mapView: GMSMapView, didTap overlay: GMSOverlay) { //Write your code here }
而且,这个方法可以用于GMSPolygon
因为它也是从GMSOverlay
inheritance的。