在Swift中检测GMSPolyline的轻击?

13

我在尝试检测Google地图上绘制的GMSPolyline的轻触操作,对于GMSpolygones它可以正常工作,但是相同的方法似乎无法用于polyline。我的当前方法适用于polygones:

if (GMSGeometryContainsLocation(coordinate, polygon.path!, false)) {
    ...
}

有什么建议可以检测折线上的轻触?或者接近它?

2个回答

13
根据他们的API文档, 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)")
}

4
您可以使用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
有关更多信息,请参见https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p.html#a3a2bf2ff4481528f931183cb364c0f4b

好奇这个在SwiftUI中会是什么样子,因为地图是在UIRepresentable中? - chitgoks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接