子类化GMSMarker和GMSMapViewDelegate didTapMarker

时间:2017-03-20 11:59:29

标签: ios swift google-maps

我正在使用这个简单的MyMarker

class MyMarker: GMSMarker {
    var id: UInt32 = 0
}

这样我的标记也可以包含额外的数字标记。当用户点按我的标记时,我会调用segue打开一个新的场景,其中的内容是动态的,并根据MyMarker {{1}绘制}。我想做点什么:

id

问题当然是GMSMapViewDelegate期望标记为 func mapView(mapView: GMSMapView, didTapMarker marker: MyMarker) -> Bool { some_global_variable = marker.id; performSegueWithIdentifier("segue", sender: nil) return true } 类型。

如何实现我追求的行为?

1 个答案:

答案 0 :(得分:5)

您需要在其代理方法中键入强制转换GMSMarker到自定义标记,不要更改GMSMapViewDelegate方法的签名。

func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool {
    if let myMarker = marker as? MyMarker {
         some_global_variable = myMarker.id
         performSegueWithIdentifier("segue", sender: nil)
    }
    return true
}