0

希望有人可以阐明我的问题。我有 9 组地理点数据。有没有办法决定/选择离我当前 GPS 位置最近的地理点(p1 到 p9)?

public class LocationCalc extends Activity {
GeoPoint p1, p2, p3, p4, p5, p6, p7, p8, p9;
float result;


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location_calc);
//<---GPS DATA starts here
String coordinates[] = {"2.976720", "101.7340622","2.9739549","101.7302322","2.9708705", "101.7306824","2.9700341", "101.7316818", "2.9681962", "101.7278519", "2.96585", "101.7311020", "2.9625874", "101.7255707", "2.9755125", "101.7287445", "2.9779000", "101.7305298" };
float lat0 = Float.parseFloat(coordinates[0]);
float lng0 = Float.parseFloat(coordinates[1]);
float lat1 = Float.parseFloat(coordinates[2]);
float lng1 = Float.parseFloat(coordinates[3]);
float lat2 = Float.parseFloat(coordinates[4]);
float lng2 = Float.parseFloat(coordinates[5]);
float lat3 = Float.parseFloat(coordinates[6]);
float lng3 = Float.parseFloat(coordinates[7]);
float lat4 = Float.parseFloat(coordinates[8]);
float lng4 = Float.parseFloat(coordinates[9]);
float lat5 = Float.parseFloat(coordinates[10]);
float lng5 = Float.parseFloat(coordinates[11]);
float lat6 = Float.parseFloat(coordinates[12]);
float lng6 = Float.parseFloat(coordinates[13]);
float lat7 = Float.parseFloat(coordinates[14]);
float lng7 = Float.parseFloat(coordinates[15]);
float lat8 = Float.parseFloat(coordinates[16]);
float lng8 = Float.parseFloat(coordinates[17]);
p1 = new GeoPoint(
    (int)(lat0*1E6),
    (int)(lng0*1E6));
p2 = new GeoPoint(
    (int)(lat1*1E6),
    (int)(lng1*1E6));
p3 = new GeoPoint(
    (int)(lat2*1E6),
    (int)(lng2*1E6));
p4 = new GeoPoint(
    (int)(lat3*1E6),
    (int)(lng3*1E6));
p5 = new GeoPoint(
    (int)(lat4*1E6),
    (int)(lng4*1E6));
p6 = new GeoPoint(
    (int)(lat5*1E6),
    (int)(lng5*1E6));
p7 = new GeoPoint(
    (int)(lat6*1E6),
    (int)(lng6*1E6));
p8 = new GeoPoint(
    (int)(lat7*1E6),
    (int)(lng7*1E6));
p9 = new GeoPoint(
    (int)(lat8*1E6),
    (int)(lng8*1E6));


String[] myString = new String[17]; //create array
for (int number = 0; number < myString.length; number++) { 
    float[] result = new float[17];
    Location loc = null;
    Location.distanceBetween(loc.getLatitude(), loc.getLongitude(), lat[], lng[], result);


//<---- I'm stucked at this part where I'm not sure how to use For loop and to decide the shortest distance(p1 to p9)
}
}

添加了代码,我被困在了距离之间,我的道歉我还处于学习android的阶段。我也发现使用下面 Eric 提到的 For 循环有困难。请做一些灯。谢谢。

4

1 回答 1

0

为什么不直接使用Location.distanceBetween

如:

float results = new float[1];
Location.distanceBetween(lat1, long1, lat2, long2, results);

您可以在基本for循环中使用它来检测最小值(lat1并且long1可以是起点,并且您可以在循环的每次迭代中更改lat2long2),然后返回距离最短的点。

于 2012-11-13T02:20:43.410 回答