如何在谷歌地图目标上旋转自定义标记图像c

目前我正在开发像Uber iOS应用程序这样的应用程序。 我已经集成了Google Maps SDK,并且还显示了用户当前位置的自定义图像。 目前,我正在从服务器获取一些司机的当前位置详细信息(例如:100驱动程序)。 我保存在一个NSArray ,我尝试使用以下代码在GoogleMaps上显示这些经纬度:

 for(int i=0;i<[latLongArr count];i++) { GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake([[(NSDictionary *)[latLongArr objectAtIndex:i] valueForKey:@"Latitude"] doubleValue], [[(NSDictionary *)[latLongArr objectAtIndex:i] valueForKey:@"Longitude"] doubleValue]); marker.appearAnimation = kGMSMarkerAnimationPop; marker.title = @"Title"; marker.snippet = @"Sub title"; marker.map = self.gMapView; } 

但是我正在寻找像这样的UIDesign&function

任何人都可以帮助我如何显示用户当前位置和驱动程序的注释列表
(如何在谷歌地图上自定义标记图像)

在方向API(苹果或谷歌地图)有一个列表点。 因此,要计算两点之间的angular度,您可以:

 func DegreeBearing(A:CLLocation,B:CLLocation)-> Double{ var dlon = self.ToRad(B.coordinate.longitude - A.coordinate.longitude) let dPhi = log(tan(self.ToRad(B.coordinate.latitude) / 2 + M_PI / 4) / tan(self.ToRad(A.coordinate.latitude) / 2 + M_PI / 4)) if abs(dlon) > M_PI{ dlon = (dlon > 0) ? (dlon - 2*M_PI) : (2*M_PI + dlon) } return self.ToBearing(atan2(dlon, dPhi)) } func ToRad(degrees:Double) -> Double{ return degrees*(M_PI/180) } func ToBearing(radians:Double)-> Double{ return (ToDegrees(radians) + 360) % 360 } func ToDegrees(radians:Double)->Double{ return radians * 180 / M_PI } 

并为制造商设置旋转

 maker.rotation = DegreeBearing(self.fromPoint, B: self.toPoint) 

更新下面的ObjC代码

 -(double) DegreeBearing:(CLLocation*) A locationB: (CLLocation*)B{ double dlon = [self ToRad:(B.coordinate.longitude - A.coordinate.longitude)]; double dPhi = log(tan([self ToRad:(B.coordinate.latitude)] / 2 + M_PI / 4) / tan([self ToRad:(A.coordinate.latitude)] / 2 + M_PI / 4)); if (fabs(dlon) > M_PI){ dlon = (dlon > 0) ? (dlon - 2*M_PI) : (2*M_PI + dlon); } return [self ToBearing:(atan2(dlon, dPhi))]; } -(double) ToRad: (double)degrees{ return degrees*(M_PI/180); } -(double) ToBearing:(double)radians{ double degree = [self ToDegrees:radians]; return degree+360% 360; } -(double) ToDegrees:(double)radians{ return radians * 180 / M_PI; }