我很努力地檢測到在我的Google地圖上繪製的GMSPolyline上的一個水龍頭,它對GMSpolygones工作得很好,但同樣的方法似乎不適用於多段線。我目前用於多邊形的方法是:在Swift中檢測GMSPolyline上的tap?
if (GMSGeometryContainsLocation(coordinate, polygon.path!, false)) {
...
}
如何檢測多段線上的水龍頭?或者只是靠近它?
我很努力地檢測到在我的Google地圖上繪製的GMSPolyline上的一個水龍頭,它對GMSpolygones工作得很好,但同樣的方法似乎不適用於多段線。我目前用於多邊形的方法是:在Swift中檢測GMSPolyline上的tap?
if (GMSGeometryContainsLocation(coordinate, polygon.path!, false)) {
...
}
如何檢測多段線上的水龍頭?或者只是靠近它?
根據它們的API documentation,GMSPolyline
繼承自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)")
}
可以使用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
繼承。