我正在使用谷歌地图,我将标记设置为我的地图,如下所示:
var marker = GMSMarker(position: CLLocationCoordinate2D(latitude: Double(item.lat)!, longitude: Double(item.lon)!))
marker.map = mapview
现在,我想检测用户何时点击这些标记。
我该怎么办?
答案 0 :(得分:4)
您应该在mapview
self
代表设为UIViewController
viewDidLoad
self.mapview.delegate = self
您的UIViewController
extension ViewControllerClass: GMSMapViewDelegate {
//class code
@objc(mapView:didTapMarker:) func mapView(_: GMSMapView, didTap marker: GMSMarker) -> Bool {
//do something
return true
}
}
也许这种方法可以通过其他方式实现,但Xcode
迫使我在从Swift 2
迁移到Swift 3
时采用这种方式
答案 1 :(得分:2)
适用于Swift 3
你可以实现GMSMapViewDelegate
这样的事情:
extension YourViewConytoller: GMSMapViewDelegate {
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
print ("MarkerTapped Locations: \(marker.position.latitude), \(marker.position.longitude)")
return true
}
}