在Swift中收听InfowWindow点击

Jay*_*ayo 1 ios google-maps-sdk-ios swift

我知道有可能捕获标记的infowindow中的水龙头.我按照这里的文档.

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

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

    }
Run Code Online (Sandbox Code Playgroud)

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

vai*_*hav 8

您需要使用代理GMSMapView以及一些先前的设置,请参阅下文.

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

class yourClassName: UIViewController,GMSMapViewDelegate

mapView?.delegate = self
Run Code Online (Sandbox Code Playgroud)

在infoWindow上检测点击的方法:

func mapView(_ mapView: GMSMapView, didTapInfoWindowOf marker: GMSMarker) {
    print("infowindow tapped")
}
Run Code Online (Sandbox Code Playgroud)

检测点击的方法GMSMarker:

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

    if marker.title == "myMarker"{
        print("handle specific marker")
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

创建自定义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
    }
Run Code Online (Sandbox Code Playgroud)