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
}