我正在努力检测在我的Google地图上绘制的GMSPolyline上的点击,它可以很好地使用GMSpolygones,但同样的方法似乎不适用于折线。我目前使用的多边形方法是:
if (GMSGeometryContainsLocation(coordinate, polygon.path!, false)) {
...
}
如何检测折线上的水龙头?或者只是靠近它?
答案 0 :(得分:11)
根据他们的API documentation,GMSPolyline
继承自GMSOverlay
,这意味着GMSPolyline
具有属性tappable
。所以你想要这样的东西
let polyLine: GMSPolyline = GMSPolyline(path: newPath)
polyLine.isTappable = true
polyline.zIndex = 0
polyline.map = yourGoogleMap
然后,您的GMSMapViewDelegate
应通过此功能通知您GMSPolyline
图层内的任何位置
func mapView(_ mapView: GMSMapView, didTap overlay: GMSOverlay)
{
print(overlay.zindex)
print("User Tapped Layer: \(overlay)")
}
答案 1 :(得分:3)
您可以使用GMSPolyline的isTappable
属性。
isTappable
如果此叠加层应该导致点按通知。
polyline.isTappable = true
GMSPolyline
继承自GMSOverlay
。因此,要检测点击覆盖GMSMapViewDelegate
,请提供委托方法:
- mapView:didTapOverlay:点击叠加层后调用。
每当点击折线时,都会调用GMSMapViewDelegate
方法didTapOverlay
func mapView(_ mapView: GMSMapView, didTap overlay: GMSOverlay) {
//Write your code here
}
此外,此方法可用于GMSPolygon
,因为它也继承自GMSOverlay
。