У меня есть список широты и долготы, хранящихся в базе данных. Теперь я пытаюсь разработать функцию поиска близлежащего места из моего текущего местоположения. Значит, я должен искать всю широту и долготу из своей базы данных и посмотреть, какие из мест находятся в моей области.Найти ближайшие места android java
0
A
ответ
0
Чтобы найти расстояние от одного двухмерного точки к другой, вы можете использовать формулу Haversine, (без вызова каких-либо функций API.)
// All measurements are in meters
var rad = function(x) {
return x * Math.PI/180;
};
var getDistance = function(coord1, coord2) {
// This is the Earth's radius
var earthRad = 6378137;
var dLat = rad(coord2.lat() - coord1.lat());
var dLong = rad(coord2.lng() - coord1.lng());
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(rad(coord1.lat())) * Math.cos(rad(coord2.lat())) *
Math.sin(dLong/2) * Math.sin(dLong/2);
var b = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var distance = earthRad * b;
// Returns distance from coord1 to coord2 in meters
return distance;
};
Ваш вопрос немного широк, так что это не может быть лучшее решение. Если вы постоянно обновляете свое текущее местоположение, вам придется реализовать алгоритм сортировки деревьев или какой-либо другой способ оптимизации производительности, а не проверять свою базу данных на расстояния при каждом обновлении.
0
Вы можете использовать объект Location. Метод DistanceBetween или distanceTo даст вам расстояние «как ворона» между двумя точками. Оттуда вы можете отфильтровать результаты и отобразить только те места, которые вы хотите.
0
вот что я использую
public void nearBy() {
if (map.getMyLocation() != null) {//check if my location was found
db = new MyDatabase(MainActivity.context);
Cursor medecin = db.lireMedecin();//read values from database
map.clear();//clearing the map
while (medecin.getPosition() < medecin.getCount()) { //cheking if this doctor is nearby...
String Lat1 = medecin.getString(5);//doctor's latitude
String Lon1 = medecin.getString(6);//doctor's longitude
LatLng me = new LatLng(map.getMyLocation().getLatitude(), map.getMyLocation().getLongitude());//my location
LatLng med = new LatLng(Double.parseDouble(Lat1), Double.parseDouble(Lon1));//doctor location
if (CalDist(me, med) < 6) {//if distance is < 6km add marker to the map
map.addMarker(new MarkerOptions().position(med).title(medecin.getString(1) + " " + medecin.getString(2))
.snippet(medecin.getString(4)).icon(BitmapDescriptorFactory
.fromResource(Icone(medecin.getString(7).charAt(0))))); //showing the doctor on the map
}
medecin.moveToNext();//next doctor
}
} else
Toast.makeText(context, "Gps signal not valid", Toast.LENGTH_SHORT).show();//can't find my position
}
высчитывает расстояние:
public static double CalDist(LatLng StartP, LatLng EndP) {
int Radius = 6371;//radius of earth in Km
double lat1 = StartP.latitude ;
double lat2 = EndP.latitude ;
double lon1 = StartP.longitude ;
double lon2 = EndP.longitude ;
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
double c = 2 * Math.asin(Math.sqrt(a));
return Radius * c;
}
1
Location.distanceBetween(lat1,lon1, lat2,lon2, result);
Смежные вопросы
- 1. Android - найти ближайшие места
- 2. Android GoogleMap найти ближайшие места
- 3. найти ближайшие места в iPhone
- 4. Как найти ближайшие места, например (например, больница)
- 5. Найти ближайшие места по широте и долготе
- 6. Android найти ближайшие ресурсов
- 7. Найти ближайшие два точки JAVA
- 8. Найти ближайшие к нему места от json Sencha Touch 2
- 9. Найти ближайшие места из текущего местоположения в телефоне Windows 8
- 10. Использование LINQ найти ближайшие места из базы данных
- 11. Как мы можем найти ближайшие места в приложении Augumented Reality?
- 12. Android wifi sniffer: найти ближайшие устройства
- 13. Найдите ближайшие места по данному адресу
- 14. найти ближайшие значения C++
- 15. Найти ближайшие Пропорции алгоритм
- 16. Как найти ближайшие полдень
- 17. Поиск Ближайшие места API для продуктов питания и типы цен
- 18. XPath - найти ближайшие дни рождения
- 19. Найдите ближайшие места, используя API-интерфейс Google Maps Javascript API?
- 20. java: Найти ближайшие позиции GPS из заданного местоположения GPS
- 21. Как найти ближайшие значения между коллекцией в java?
- 22. Получить ближайшие места на Картах Google, используя пространственные данные MySQL
- 23. Как найти Ближайшие места на основе текущего lat и long с использованием Parse API (parse.com) в android
- 24. Oracle - Найти ближайшие значения и разница дат
- 25. Найти ближайшие узлы в дереве двоичного поиска
- 26. Как найти ближайшие координаты в google map
- 27. Как найти ближайшие точки в заданных координатах
- 28. API Карт Google - Найти ближайшие местоположения
- 29. Как найти ближайшие точки на основе положения?
- 30. найти ближайшие дни рождения из базы данных