메신저로 내 사용자를 찾고지도에서 다른 위치와의 거리를 계산합니다 (위도/경도는 정적 임). 이렇게하려면 다음을 사용하십시오.lat/lng를 사용하여 위도/경도를 새로 고침하거나 더 빨리로드하십시오.
private void findloc() {
// TODO Auto-generated method stub
try{
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
Double lat = Double.valueOf(location.getLatitude());
Double lng = Double.valueOf(location.getLongitude());
Location location2 = new Location("gps");
location2.setLatitude(35.519583);
location2.setLongitude(24.016864);
float distance = location2.distanceTo(location);
TextView sitesdistancekm = (TextView) findViewById(R.id.sitesdistancekm);
sitesdistancekm.setText("Geographical Distance : "+distance/1000+" km");
Toast.makeText(otto.this, "lat: "+lat+"\nlng: "+lng,
Toast.LENGTH_LONG).show();
}
catch(Exception e){
TextView sitesdistancekm = (TextView) findViewById(R.id.sitesdistancekm);
sitesdistancekm.setText("No GPS signal");
}
}
내 문제는 메뉴의 새로 고침으로 findloc()를 호출하지만 변경 사항을 나던 .im 때때로 위치 스택 및 메신저 잘못된 거리를 받고 있다는 것입니다.
public boolean onOptionsItemSelected(MenuItem item) {
findloc();
return true;
}
개선 할 수있는 방법이 있습니까?
수정
그게 효과가 있니?
private void findloc() {
// TODO Auto-generated method stub
try{
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
Double lat = Double.valueOf(location.getLatitude());
Double lng = Double.valueOf(location.getLongitude());
location2 = new Location("gps");
location2.setLatitude(35.519583);
location2.setLongitude(24.016864);
float distance = location2.distanceTo(location);
TextView sitesdistancekm = (TextView) findViewById(R.id.sitesdistancekm);
sitesdistancekm.setText("Geographical Distance : "+distance/1000+" km");
Toast.makeText(otto.this, "lat: "+lat+"\nlng: "+lng,
Toast.LENGTH_LONG).show();
onLocationChanged(location);
}
catch(Exception e){
TextView sitesdistancekm = (TextView) findViewById(R.id.sitesdistancekm);
sitesdistancekm.setText("No GPS signal");
}
}
private void onLocationChanged(Location location) {
// TODO Auto-generated method st
float distance = location2.distanceTo(location);
TextView sitesdistancekm = (TextView) findViewById(R.id.sitesdistancekm);
sitesdistancekm.setText("Geographical Distance : "+distance/1000+" km");
}
IIRC, 문서의 언급을 의존하기 전에 위치 갱신을 제공 할 수 있는지 확인하기 위해 제공 호출 할 수 있습니다 GPS가 잠시 동안 켜져 있지 않은 경우와 같은 상황에서 – thegrinner
@jack에 대한 예제 코드가 있습니까? – kostas
지금은 위치 수신기로 시도했지만이 방법은 내 lat/lng를 사용하는 데 더 많은 시간이 필요합니다. – kostas