title: How to rotate GMSMarker in the direction which user is moving in Swift?
body: <p>I am using this code.</p>
  
  <pre><code> let marker = GMSMarker()
   marker.position = coordinates
   marker.tracksViewChanges = true     
   marker.icon = UIImage(named:"car")
   marker.appearAnimation = kGMSMarkerAnimationNone
   marker.map = mapView
  </code></pre>
  
  <p>location manager code</p>
  
  <pre><code>func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
  {
  
      let location = locations.last! as CLLocation
  
      if(checkingLocation == false)
      {
      let camera = GMSCameraPosition.camera(withLatitude: (location.coordinate.latitude), longitude: (location.coordinate.longitude), zoom: 16.0)
      oldLocationCenter = location
      marker.position = (locationManager.location?.coordinate)!
           self.mapView?.animate(to: camera)
        //  checkingLocation = true
          locationManager.stopUpdatingLocation()
  
      }
      else
      {
  
          let updateCam = GMSCameraUpdate.setTarget(CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude))
          updateMarker(coordinates: location.coordinate, degrees:DegreeBearing(A: oldLocationCenter, B: location) , duration: 10.0)
          self.mapView?.animate(with: updateCam)
          locationManager.stopUpdatingLocation()
  
      }
  
  
  }
  
  func updateMarker(coordinates: CLLocationCoordinate2D, degrees: CLLocationDegrees, duration: Double){
      // Keep Rotation Short
      CATransaction.begin()
      CATransaction.setAnimationDuration(10.0)
      marker.rotation = degrees
      CATransaction.commit()
  
      // Movement
      CATransaction.begin()
      CATransaction.setAnimationDuration(duration)
      marker.position = coordinates
  
      // Center Map View
      let camera = GMSCameraUpdate.setTarget(coordinates)
      mapView.animate(with: camera)
  
      CATransaction.commit()
  }
  
  func DegreeBearing(A:CLLocation,B:CLLocation)-&gt; Double{
  
  
      var dlon = self.ToRad(degrees: B.coordinate.longitude - A.coordinate.longitude)
  
      let dPhi = log(tan(self.ToRad(degrees: B.coordinate.latitude) / 2 + M_PI / 4) / tan(self.ToRad(degrees: A.coordinate.latitude) / 2 + M_PI / 4))
  
      if  abs(dlon) &gt; M_PI{
          dlon = (dlon &gt; 0) ? (dlon - 2*M_PI) : (2*M_PI + dlon)
      }
      return self.ToBearing(radians: atan2(dlon, dPhi))
  }
  
  func ToRad(degrees:Double) -&gt; Double{
      return degrees*(M_PI/180)
  }
  
  func ToBearing(radians:Double)-&gt; Double{
      return (ToDegrees(radians: radians) + 360) / 360
  }
  
  func ToDegrees(radians:Double)-&gt;Double{
      return radians * 180 / M_PI
  }
  </code></pre>
  
  <p>By using above code my marker(car)is moving from old to new location also i used these locations for getting bearing angle. But it is not rotating. Is there any other way to achieve this ? Please guide me.</p>