Rotate GMSMarker in direction at which user facing

前端 未结 8 1242
独厮守ぢ
独厮守ぢ 2020-12-28 17:58

I have requirement like on my current location one view will display. It will rotate if device was rotate or location will be change.I research lot but got all the code whic

8条回答
  •  太阳男子
    2020-12-28 18:53

    Here the code modified with the changes suggested by Oren Trutner and from me:

    You just need to pass old location and new location. By passing required data you will get rotation value which is in float.

    #define degreesToRadians(x) (M_PI * x / 180.0)
    #define radiansToDegrees(x) (x * 180.0 / M_PI)
    
    - (float)getHeadingForDirectionFromCoordinate:(CLLocationCoordinate2D)fromLoc toCoordinate:(CLLocationCoordinate2D)toLoc
    {
        float fLat = degreesToRadians(fromLoc.latitude);
        float fLng = degreesToRadians(fromLoc.longitude);
        float tLat = degreesToRadians(toLoc.latitude);
        float tLng = degreesToRadians(toLoc.longitude);
    
        float degree = radiansToDegrees(atan2(sin(tLng-fLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(tLng-fLng)));
    
        if (degree >= 0) {
            return degree;
        } else {
            return 360+degree;
        }
    }
    

提交回复
热议问题