检测Swift中的GMSPolyline?

时间:2016-11-22 18:18:54

标签: ios swift google-maps polygon polyline

我正在努力检测在我的Google地图上绘制的GMSPolyline上的点击,它可以很好地使用GMSpolygones,但同样的方法似乎不适用于折线。我目前使用的多边形方法是:

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

如何检测折线上的水龙头?或者只是靠近它?

2 个答案:

答案 0 :(得分:11)

根据他们的API documentationGMSPolyline继承自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

有关详细信息,请参阅https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p.html#a3a2bf2ff4481528f931183cb364c0f4b