1

我们正在模仿 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 错误而崩溃。

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

4

1 回答 1

0

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

于 2014-11-19T04:15:11.090 回答