在Swift中收听InfowWindow点击

时间:2016-10-03 13:53:39

标签: ios swift google-maps-sdk-ios

我知道有可能捕获标记的信息窗口中的水龙头。 I followed the documentation here

全部都是用Objective C写的,所以我尝试将其转换为Swift,这是我的代码:

func mapView(_ mapView: GMSMapView, didTap InfoWindowOfMarker: GMSMarker) {
        print("You tapped infowindow")

    }

但这根本不会被解雇。该方法有什么问题?

1 个答案:

答案 0 :(得分:7)

您需要使用GMSMapView的代表以及之前的一些设置,如下所示。

声明使用GMSMapViewDelegate方法并将委托设置为self

class yourClassName: UIViewController,GMSMapViewDelegate

mapView?.delegate = self

检测点按infoWindow的方法:

func mapView(_ mapView: GMSMapView, didTapInfoWindowOf marker: GMSMarker) {
    print("infowindow tapped")
}

检测点击GMSMarker的方法:

func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool {
    print("tapped on marker")

    if marker.title == "myMarker"{
        print("handle specific marker")
    }
    return true
}

创建自定义infoWindow的方法:

func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) -> UIView! {
        let infoWindow = Bundle.main.loadNibNamed("nibName", owner: self, options: nil).first as! ClassName
        infoWindow.name.text = "title"
        infoWindow.address.text = "relevant address"
        infoWindow.photo.image = UIImage(named: "imageName")
        return infoWindow
    }