【发布时间】:2016-12-01 23:42:57
【问题描述】:
我在这里有这个功能,它可以在点击标记时执行操作。但我只希望这适用于某些标记,比如包含在数组中的标记
markers_array = [GMSMarkers]()
有没有办法让 mapView 功能只在这些特定标记上执行?
func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool {
if let marker = marker as? ChosenMarker {
if marker.touchEnabled == true {
// Have to show which one is selected too.
print("Hello")
let setAsHomeButton: SetAsHomeButtonView = SetAsHomeButtonView(marker: marker)
self.view.addSubview(setAsHomeButton)
self.setupSetAsHomeButton(setAsHomeButton)
} else {
}
}
return true
}
谢谢
【问题讨论】:
-
您可以创建一个 GMSMarkers 子类,其具有类似 touchEnabled 的布尔值,并在 mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) 中将参数“marker”转换为自定义类。最后你可以检查一下是否启用了touchEnabled。
-
@JuanGarcia 我试试看!应该可以,谢谢。
-
@JuanGarcia 我相信我已经让它工作了,因为它只会在选定的标记上弹出,但是有没有办法获得原始的 didTapMarker 函数?因为这个函数似乎已经覆盖了它。
-
您的意思是检查标记是来自您的自定义类还是 GMSMarkers 类?
-
@JuanGarcia 我已经添加了我的代码。所选标记的行为符合我的要求,但现在当我单击其他标记时,当我希望它们像往常一样返回 marker.title 时,它们什么也不做。
标签: ios swift google-maps google-maps-api-3 google-maps-markers