我们正在模仿 iOS 中的谷歌地图导航Google Maps SDK for iOS
。在这个过程中,我需要计算bearing/heading
两个坐标之间的次数,假设为 100 次。我正在使用以下方法计算轴承
- (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 = radiandsToDegrees(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;
}
}
通过这种方法,我得到了我正在寻找的确切方位,但是如果我将此方法调用 100 次,则应用程序的内存使用量将动态达到 2GB。所以我的应用程序因 malloc 错误而崩溃。
有没有其他方法可以计算低内存管理的轴承,或者如何仅使用上述计算来减少应用程序的内存使用量。