私はオープンストリートマップで作業しています。これで、マップ内のすべての交点を取得し、それらの経度と緯度を取得できます。また、アプリケーションに GPS があり、GPS 座標に最も近い交点を見つけたいと考えています。これは私の方法ですが、そうではありません。非常に正確。理由を知るために助けが必要です!ありがとう..
public Nodee nearestPoint(double longitude, double latitude) throws Exception {
inters = new ArrayList<Nodee>();
inters = getIntersections();
double minLong = Math.abs(longitude - (inters.get(0).lon));
double minLat = Math.abs(latitude - (inters.get(0).lat));
Nodee NearestNodeLong = null;
Nodee NearestNodeLat = null;
for (int i = 0; i < inters.size(); i++) {
if (Math.abs((inters.get(i).lon) - longitude) < minLong) {
minLong = (Math.abs((inters.get(i).lon) - longitude));
NearestNodeLong = inters.get(i);
}
if (Math.abs((inters.get(i).lat) - latitude) < minLat) {
minLat = Math.abs((inters.get(i).lat) - latitude);
NearestNodeLat = inters.get(i);
}
}
if (NearestNodeLong.equals(NearestNodeLat)) {
return NearestNodeLong;
} else if (!NearestNodeLong.equals(NearestNodeLat)) {
Double d1 = (double) distFrom(latitude, longitude, (NearestNodeLat.lat),
(NearestNodeLat.lon));
Double d2 = (double) distFrom(latitude, longitude, (NearestNodeLong.lat),
(NearestNodeLong.lon));
if (d1 < d2)
return NearestNodeLat;
else if (d2 < d1)
return NearestNodeLong;
}
return null;
}