Animate Map to Location is Not Working Google Maps iOS

button, gmsmapview, google-maps, ios, swift

Solution

Try this way

let cameraPosition = GMSCameraPosition.camera(withLatitude: place.latitude, longitude: place.longitude, zoom: 15.0)
mapView.animate(to: cameraPosition)

Edit: Issue is you aren't having the reference of your map with your mapView object, change your `viewDidLoad`'s line:

view = mapView

TO:

// sets up the map view (camera, location tracker etc.)
let camera = GMSCameraPosition.camera(withLatitude: place.latitude, longitude: place.longitude, zoom: 17.0)
let mapView = GMSMapView.map(withFrame: view.bounds, camera: camera)
mapView.isMyLocationEnabled = true
mapView.delegate = self
self.mapView = mapView
view.addSubview(self.mapView)

Problem

``` import UIKit import GoogleMaps import FirebaseDatabase import GeoFire class MapViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate { var mapView = GMSMapView() var locationManager: CLLocationManager! let regionRadius: CLLocationDistance = 1000 var place = CLLocationCoordinate2D() @IBOutlet var myLocationButton: UIButton! @IBOutlet var infoWindow: UIView! @IBOutlet var postTitle: UILabel! @IBOutlet var postImage: UIImageView! var showing = false; var pins = [String: Pin]() var currentMarker = GMSMarker() override func viewDidLoad() { super.viewDidLoad() // sets up the map view (camera, location tracker etc.) let camera = GMSCameraPosition.camera(withLatitude: place.latitude, longitude: place.longitude, zoom: 17.0) let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) mapView.isMyLocationEnabled = true mapView.delegate = self view = mapView self.view.addSubview(myLocationButton) self.view.bringSubview(toFront: myLocationButton) // Location manager locationManager = CLLocationManager() locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation locationManager.requestAlwaysAuthorization() locationManager.delegate = self locationManager.startUpdatingLocation() // Get nearby records let geoFire = GeoFire(firebaseRef: FIRDatabase.database().reference().child("geofire")) let query = geoFire?.query(at: CLLocation(latitude: place.latitude, longitude: place.longitude), withRadius: 0.6) _ = query?.observe(.keyEntered, with: { (key, location) in let marker = GMSMarker() let newPin = Pin(title: "post", locationName: "\(key!)", discipline: "", coordinate: (location?.coordinate)!) self.pins[newPin.locationName] = newPin marker.icon = UIImage(named: "icon_small_shadow") marker.position = Pin.coordinate marker.title = Pin.title marker.snippet = Pin.locationName marker.map = mapView }) myLocationTapped(myLocationButton) } // sets the info in the custom info window func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool { if(currentMarker == marker && showing) { infoWindow.isHidden = true showing = false } else { infoWindow.isHidden = false self.view.addSubview(infoWindow) self.view.bringSubview(toFront: infoWindow) postTitle.text = marker.snippet showing = true } currentMarker = marker return true } @IBAction func myLocationTapped(_ sender: Any) { print("tapped") let cameraPosition = GMSCameraPosition.camera(withLatitude: place.latitude, longitude: place.longitude, zoom: 15.0) mapView.animate(to: cameraPosition) } ``` I have the following code set up, designed to place a button on the google maps map that when tapped, animates the google maps camera to that location. However, my code doesn't work. The "tapped" prints in the console but the camera doesn't budge. I haven't been able to find an answer anywhere for this, so any help would be appreciated. EDIT: Added full code for the Map View Controller

Original source