2016-11-22 70 views
9

我很努力地檢測到在我的Google地圖上繪製的GMSPolyline上的一個水龍頭,它對GMSpolygones工作得很好,但同樣的方法似乎不適用於多段線。我目前用於多邊形的方法是:在Swift中檢測GMSPolyline上的tap?

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

如何檢測多段線上的水龍頭?或者只是靠近它?

回答

7

根據它們的API documentationGMSPolyline繼承自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)") 
} 
2

可以使用GMSPolyline的isTappable財產。

isTappable

如果該套印造成自來水的通知。

polyline.isTappable =真從GMSOverlay

GMSPolyline繼承。因此,爲了檢測自來水上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

相關問題