Ios 子类化GMSMarker和GMSMapViewDelegate didTapMarker

Ios 子类化GMSMarker和GMSMapViewDelegate didTapMarker,ios,swift,google-maps,Ios,Swift,Google Maps,我正在使用这个简单的MyMarker类 class MyMarker: GMSMarker { var id: UInt32 = 0 } 这样我的标记也可以保留一个额外的数字标记。当用户点击我的标记时,我调用一个segue打开一个新的场景,该场景的内容是动态的,并且是相对于MyMarker的id绘制的。我想做一些类似的事情: func mapView(mapView: GMSMapView, didTapMarker marker: MyMarker) -> Bool {

我正在使用这个简单的
MyMarker

class MyMarker: GMSMarker {
    var id: UInt32 = 0
}
这样我的标记也可以保留一个额外的数字标记。当用户点击我的标记时,我调用一个
segue
打开一个新的场景,该场景的内容是动态的,并且是相对于
MyMarker
id
绘制的。我想做一些类似的事情:

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


如何实现我所追求的行为?

您需要在自定义标记的委托方法中键入cast
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
}