在iOS中计算两个坐标之间的方位/航向会导致内存问题



我们正在用Google Maps SDK for iOS模仿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错误而崩溃。

是否有其他方法来计算低内存管理的轴承,或者如何通过使用上述计算来减少应用程序的内存使用。

减少内存问题的唯一解决方案是减少计算次数。仅计算所需点的方位,删除不必要点的计算。

相关内容

  • 没有找到相关文章

最新更新