2012-04-16 2 views
0

사용자가 네트워크 위치를 사용하여 거친 위치를 사용하여 위치 정보를 수집하는 Android 앱을 작성 중입니다. 사용자가 특정 시간에 위치를 db (savedLocation)에 저장할 수있게하고 사용자가 savedLocation으로 돌아 오면 (또는 네트워크 위치를 고소하고 있기 때문에 그 위치의 거친 범위 내에서) 원하는 경우 방송 수신기에 발사. 나는 잘 알고 db에 사용자의 위치를 ​​저장하고 현재 위치 등과 비교하는 방법을 알고 있습니다.데이터베이스에서 저장된 위치와 비교하기 위해 거친 위치를 사용하는 방법

그러나 네트워크 위치가 위치를 결정하는 데 상대적으로 부정확 한 방법 인 경우 어떤 그 저장된 위치의 거리 X 내에 사용자가 접근 할 때를 결정하는 좋은 방법.

+0

정교하게 만들 수 없습니까? – Dharmendra

+0

죄송합니다. locationManager.requestLocationUpdates (LocationManager.NETWORK_PROVIDER, 0, 0, locationListener)를 사용하고 있다고 가정 해 보겠습니다. 유일한 위치 제공자입니다. LongitudeX, LatitudeY 중 500m 이내에 있는지 어떻게 알 수 있습니까? – benbeel

답변

1

사용자의 위치를 ​​추적하고 해당 위치를 데이터베이스에 저장한다는 것이 무엇인지 이해합니다. 이제 사용자가 이전 위치에 도달했을 때 사용자에게 메시지를 표시하려고하지만 특정 지역이 있어야합니다. 이 경우 아래 코드를 사용하여 위도와 경도에서 사용자의 지역을 알 수 있습니다.

String latitude1, latitude2, longitude1, longitude2; 
//Now Suppose you have some values in this variables. 
//In your case latitude1 and longitude1 is from database and latitude2 and longitude2 is from current Location. 
float radius = 500; //Distance in meters 

Location location1 = new Location("GPS"); 
location1.setLatitude(latitude1); 
location1.setLongitude(longitude1); 

Location location2 = new Location("GPS"); 
location2.setLatitude(latitude2); 
location2.setLongitude(longitude2); 

Float distance = location1.distanceTo(location2); 
distance = Math.abs(distance); 

//Here you can compare two distances 1. distance and 2. radius 
if(distance <= radius) { 
//Use is in a 500 meters radius. You can notify user by notification 
} 
관련 문제