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

时间:2014-07-14 11:27:59

标签: objective-c google-maps ios7 memory-leaks bearing

我们在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次,则app的内存使用量将动态达到2GB。所以我的应用程序崩溃与malloc错误。

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

1 个答案:

答案 0 :(得分:0)

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

相关问题