Android 将gps跳线保存到阵列中

Android 将gps跳线保存到阵列中,android,arrays,gps,save,increment,Android,Arrays,Gps,Save,Increment,这听起来很基本,但我真的想知道标准是什么。 为了收集GPS数据线,并在阵列中节省LAT和Long,哪种算法的性能最好? 我的方式好吗?还有更好的建议吗? 谢谢 通过节省内存实现的最佳性能是将纬度和经度存储在不同的阵列中: int[] longitudes = new int[maxSize]; int[] latitudes = new int[maxSize]; longitudes[i] = loc.getLongitude() * 1E7; / 1E7 = 1000000: conve

这听起来很基本,但我真的想知道标准是什么。 为了收集GPS数据线,并在阵列中节省LAT和Long,哪种算法的性能最好? 我的方式好吗?还有更好的建议吗? 谢谢


通过节省内存实现的最佳性能是将纬度和经度存储在不同的阵列中:

int[] longitudes = new int[maxSize];
int[] latitudes  = new int[maxSize];

longitudes[i] = loc.getLongitude() * 1E7; / 1E7 = 1000000: converts to integer
latitudes[i] = loc.getLatitdue() * 1E7;
其中maxSize可以是写入存储之前的最大缓冲区大小

java中的二维数组比C中的数组需要更多的空间,因为2d数组是int[]类型的1d对象数组,每个一维条目可以释放20个字节

如果需要,可以将lat/lon存储在一个int[]数组中:

int[] latLongs= new int[2 * maxSize];

latLongs[2*i] = (int) (loc.getLongitude() * 1E7);
latLongs[2*i + 1] = (int) (loc.getLatitude() * 1E7);

如果您想使用faktor 1E7,只需使用double[]或float[]数组。

为什么还要使用二维数组?你知道数组是什么吗?@323go-mmm我不需要它们来保存lat和long吗?我希望任何一个给定的点都有一个uniqe indexI不明白你在问什么。我猜你不知道数组是如何工作的?@XaverKapeller你想详细说明一下吗?您将经度和纬度分配给数组中的同一元素,因此会用另一个值覆盖一个值。如果您知道数组是如何工作的,这是如何发生的?Weel解释道。但是关于索引的增量:在每次调用时简单地增加它们就可以了?是的,一旦从location API接收到一个位置,就增加缓冲区索引,并存储该位置。确保索引不超过最大大小。
int[] latLongs= new int[2 * maxSize];

latLongs[2*i] = (int) (loc.getLongitude() * 1E7);
latLongs[2*i + 1] = (int) (loc.getLatitude() * 1E7);