Search code examples
iosgoogle-mapsswift3infowindow

How to customise googlemap infoWindow using Swift 3


Xcode version: 8.1

aim:

To replace native infoWindow by custom one

problem:

  1. When I click on the marker, my custom infoWindow did not show up but the native one, Or
  2. Thread 1:signal SIGABRT shown if I don't delete myView.delegate = self(See my code & my research #21)

what I have done:

  1. Created a .swift file and a .xib file with my custom infoWindow design.
  2. Inserted mapView function into ViewController.swift:

    override func viewDidLoad() {
        super.viewDidLoad()
    

    ...

        let camera = GMSCameraPosition.camera(withLatitude: latitude,
                                              longitude: Longitude, zoom: 16)
        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
        mapView.delegate = self  // Thread 1:signal SIGABRT shown if i add this line
        mapView.isMyLocationEnabled = true
        self.view = mapView
    
        let marker = GMSMarker()
        marker.position = CLLocationCoordinate2DMake(latitude, Longitude)
        marker.title = "Me"
        marker.map = mapView
        mapView.selectedMarker = marker
    }
    
    func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? {
        let infoWindow = Bundle.main.loadNibNamed("CustomInfoWindow", owner: self.view, options: nil)!.first! as! CustomInfoWindow
        infoWindow.title.text = marker.title
        return infoWindow
    }
    

my research:

  1. https://developers.google.com/maps/documentation/ios-sdk/marker
  2. https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p
  3. https://forums.developer.apple.com/thread/8462
  4. http://kevinxh.github.io/swift/custom-and-interactive-googlemaps-ios-sdk-infowindow.html
  5. https://productforums.google.com/forum/#!topic/maps/w0sP7r3XAF4
  6. Custom InfoWindow for marker Google Maps SDK, Swift 2.0
  7. https://www.youtube.com/watch?v=ILiBXYscsyY
  8. Custom annotation view in Google Maps SDK
  9. Creating custom info window in swift with the Google maps iOS sdk?
  10. How to show a Info window in iOS Google maps without tapping on Marker?
  11. Custom info window in IOS google maps sdk
  12. IOS Google Map Custom InfoWindow Xib error
  13. Google Maps Info window's resizing based on the internal content
  14. Custom Info Window for Google Maps
  15. Custom InfoWindows issue -Google Maps iOS SDK-
  16. How to customize the InfoWindow of google map iOS SDK?
  17. swift 3 google maps custom infowindow
  18. How to initialise a UIView Class with a xib file in Swift, iOS
  19. https://github.com/ziyang0621/GoogleMaps-Swift/blob/master/GoogleMapSwift/ViewController.swift
  20. https://github.com/ryanmaxwell/GoogleMapsCalloutView
  21. Implementing custom markerInfoWindow in swift not working
  22. https://codedump.io/share/hh7CO7c2j3PI/1/custom-infowindow-for-marker-google-maps-sdk-swift-20

Solution

  • Did you implement GMSMapViewDelegate?

    ViewController: GMSMapViewDelegate {
    
       ...
    
    }
    

    It seems to be that you are getting the error(crash) because you are setting the delegate to self, but your controller does not conform to that protocol.