Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Prakash Joshi

macrumors newbie
Original poster
Jun 24, 2016
1
0
I'm working on a project in which I need to move my GMSMarker on map like uber app does. The problem I'm facing on crossroads were I need to change the heading as well as bearing(rotation) at the end of road.

I want my marker should move like:

  1. Car first move P1 to vertex point(meeting point)
  2. Then it'll turn towards point P2 and
  3. Finally will move form meeting point to P2


I'm using following line of code for moving marker from location P1 to P2 but it's giving direct distance(purple path). How can I find intermediate coordinate i.e. meeting point as well as the distance from P1 to vertex(meeting point) where I need to turn the car marker in the direction of P2


self.Last_Location= last locaiton of car (P1)
self.Current_Location= current location of car (P2)
and I'm getting location update in every "6 seconds"
Code:
   func animateCarMovementonMapWithMarker(){
        let bearing:double= self.getHeadingForDirectionFromCoordinate(Last_Location, toCoordinate:
            Current_Location)
        let p1:MKMapPoint=MKMapPointForCoordinate(self.Last_Location)
        let p2:MKMapPoint=MKMapPointForCoordinate(self.Current_Location)
        let dist:CLLocationDistance=MKMetersBetweenMapPoints(p1, p2)
        CATransaction.begin()
        CATransaction.setAnimationDuration(6.0)
        self.carMarker.position = self.Last_Location
        self.carMarker.position = self.Current_Location
        self.carMarker.rotation = bearing
        CATransaction.commit()
        self.driver_Last_Location = self.Current_Location
    }
 
Last edited by a moderator:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.