Java 扫描附近位置的最佳方法是什么?
请注意,我对Android应用程序的编程还不熟悉,所以请随意说我完全错了,甚至像个白痴一样向我解释 我的应用程序非常依赖于位置。我正在使用Google Play定位服务为用户提供当前位置。用户可以在他们的设备中存储我使用hashmap存储的位置。为了使它更方便,我试图使它,所以用户只需要在一个范围内的存储位置。我目前创建这个范围的方法基本上是使用for循环来扫描用户的当前位置,看看它是否在hashmap中Java 扫描附近位置的最佳方法是什么?,java,android,geolocation,google-play-services,Java,Android,Geolocation,Google Play Services,请注意,我对Android应用程序的编程还不熟悉,所以请随意说我完全错了,甚至像个白痴一样向我解释 我的应用程序非常依赖于位置。我正在使用Google Play定位服务为用户提供当前位置。用户可以在他们的设备中存储我使用hashmap存储的位置。为了使它更方便,我试图使它,所以用户只需要在一个范围内的存储位置。我目前创建这个范围的方法基本上是使用for循环来扫描用户的当前位置,看看它是否在hashmap中 public String scan(Location local) { Str
public String scan(Location local) {
String fLoc = "";
List<String> pLoc = new ArrayList<String>();
String loc = "";
double lat = local.getLatitude();
double lon = local.getLongitude();
lat = (double) Math.round(lat * decimal) / decimal;
lon = (double) Math.round(lon * decimal) / decimal;
for (double x = -8; x < 9; x++) {
double tlat = lat;
double tlon = lon;
tlat = tlat + (x / decimal);
tlat = (double) Math.round(tlat * decimal) / decimal;
for (double y = -8; y < 9; y++) {
tlon = lon;
tlon = tlon + (y / decimal);
tlon = (double) Math.round(tlon * decimal) / decimal;
loc = ("Latitude: " + tlat + " Longitude: " + tlon);
if (locMap.containsKey(loc)) {
pLoc.add(loc);
}
}
}
if (pLoc.isEmpty()) {
lat = local.getLatitude();
lon = local.getLongitude();
lat = (double) Math.round(lat * decimal) / decimal;
lon = (double) Math.round(lon * decimal) / decimal;
loc = ("Latitude: " + lat + " Longitude: " + lon);
fLoc = loc;
} else if (pLoc.size() == 1) {
fLoc = (String) pLoc.toArray()[0];
} else {
Double diff = 0.0;
Double tdiff = 10.0;
for (String l : pLoc) {
diff = 10.0;
String[] parts = l.split(" ");
double dlat = Double.parseDouble(parts[1]) - lat;
if (dlat < 0) {
dlat = dlat * -1;
}
double dlon = Double.parseDouble(parts[5]) - lon;
if (dlon < 0) {
dlon = dlon * -1;
}
diff = dlon + dlat;
if (diff < tdiff) {
tdiff = diff;
fLoc = l;
}
}
}
return fLoc;
}
如果没有位置接近,则返回用户的当前位置。我觉得这是一种粗糙的方法,是浪费。找到附近位置的更好方法是什么?可能会对保存的位置进行for循环,以查看它与附近位置之间的差异是否足够小,但当用户开始保存大量位置时,这可能会付出高昂的代价
有什么建议吗
PS:在没有气压计的情况下增加准确的高度有什么建议吗