Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中检测到GMSPolyline上的抽头?_Ios_Swift_Google Maps_Polygon_Polyline - Fatal编程技术网

Ios 在Swift中检测到GMSPolyline上的抽头?

Ios 在Swift中检测到GMSPolyline上的抽头?,ios,swift,google-maps,polygon,polyline,Ios,Swift,Google Maps,Polygon,Polyline,我正在努力检测谷歌地图上绘制的GMSPolyline上的点击,它对GMSpolygones很有效,但同样的方法似乎不适用于多段线。我目前对polygones有效的方法是: if (GMSGeometryContainsLocation(coordinate, polygon.path!, false)) { ... } 有没有关于如何检测多段线上的轻敲的建议?或者就在它附近?根据他们的API,GMSPolyline继承自GMSOverlay,这意味着GMSPolyline具有属性tap

我正在努力检测谷歌地图上绘制的GMSPolyline上的点击,它对GMSpolygones很有效,但同样的方法似乎不适用于多段线。我目前对polygones有效的方法是:

if (GMSGeometryContainsLocation(coordinate, polygon.path!, false)) {
    ...
}
有没有关于如何检测多段线上的轻敲的建议?或者就在它附近?

根据他们的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)")
}

您可以使用GMSPolyline的
isTappable
属性

可移植

如果此覆盖会导致点击通知

polyline.isTappable=true

GMSPolyline
继承自
GMSOverlay
。因此,要检测点击覆盖
GMSMapViewDelegate
提供了一种委托方法:

  • mapView:didTapOverlay:在点击覆盖后调用
只要轻触多段线,就会调用
GMSMapViewDelegate
方法
didTapOverlay

func mapView(_ mapView: GMSMapView, didTap overlay: GMSOverlay) {
        //Write your code here
    }
此外,此方法还可用于
GMSPolygon
,因为它也继承自
GMSOverlay

有关更多信息,请参阅