将gps线保存到阵列中

时间:2014-06-23 13:46:42

标签: android arrays gps save increment

这可能听起来非常基本,但我真的想知道什么是标准。 为了收集GPS线,并保存Lats和Long(最好)一个阵列,什么算法带来最佳性能? 我的方式有什么好处?任何其他(更好)的建议? 感谢

 public void onLocationChanged(Location loc) {  

// new I and J, in increment
 givemeIandJ()

 Array[i][j]=(loc.getLatitude());
 Array[i][j]=(loc.getLongitude());

1 个答案:

答案 0 :(得分:0)

通过节省内存的最佳性能是将纬度和经度存储在不同的数组中:

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对象数组,每个(1-d)条目丢失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 [])数组。