【问题标题】:GoogleMaps Swift Tap MarkerGoogleMaps 快速点击标记
【发布时间】: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


【解决方案1】:

您可以使用 touchEnabled 之类的布尔值创建 GMSMarkers 子类,并在 mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) 中将参数“marker”强制转换为您的自定义类。最后你可以检查一下是否启用了touchEnabled。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2016-02-01
    • 1970-01-01
    • 2017-09-27
    相关资源
    最近更新 更多