#ios #swift #google-maps-sdk-ios
#iOS #swift #google-карты-sdk-ios
Вопрос:
Я знаю, что можно фиксировать нажатия в infowindow маркера. Я следил за документацией здесь.
Все они записаны, Objective C
поэтому я попытался преобразовать их в Swift
, вот мой код:
func mapView(_ mapView: GMSMapView, didTap InfoWindowOfMarker: GMSMarker) {
print("You tapped infowindow")
}
Но это вообще не срабатывает. Что не так с этим методом?
Комментарии:
1. приношу свои извинения за позднее обновление, теперь, пожалуйста, посмотрите, работает ли оно идеально..
2. вам не хватает set delegate, и я увидел
_
, что внутри вашего метода есть отметка, которая может привести к тому, что он не будет выполняться, просто проверьте мои ответы.
Ответ №1:
Вам необходимо использовать делегат 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
}
Комментарии:
1. Здравствуйте. ваш код предназначен для пользовательского infowindow. Я этого не ищу. извините. Я ищу событие касания информационного маркера
2. затем вы можете работать с переменной marker здесь, если вам не нужно пользовательское окно..