2017-10-20 14 views
0

날씨 응용 프로그램에 대한 사용자의 현재 위치를 가져 오려고하지만 일부 "미국"지역의 위치를 ​​얻습니다. 배수 튜토리얼을 시도했지만 올바른 현재 위치를 얻지 못했습니다.사용자의 위치가 올바르지 않습니다.

그것은 나를 반환

위도 : 37.421998333333335이

경도 : -122.08400000000002

위치는 "캘리포니아 마운틴 뷰, 미국은"

내가 사용했던 코드는 아래입니다 :

내 메인 클래스에서

나는 같은 위치를 받고 있어요 :

public void getLocation() 
{ 
gpsTracker = new GpsTracker(getApplicationContext()); 
Location l = gpsTracker.getLocation(); 
if(l != null) 
{ 
    lat = l.getLatitude(); 
    lon = l.getLongitude(); 
} 
    Log.d("User's location","Latitude"+lat); 
    Log.d("User's location","Longitude"+lon); 
} 
+0

'FusedLocationProviderClient' 사용 –

+0

링크 또는 일부 코드를 제공 할 수 있습니까? 나는 이것에 익숙하지 않다 –

답변

0

당신이 방법 onLocationChanged에 반환해야 할 위치.
그래서 당신은 변수에 할당 한 다음 반환 할 수 :

private Location lastLocation; 

@Override 
public void onLocationChanged(Location location) { 
    lastLocation = location; 
} 

public Location getLastLocation() { 
    return lastLocation; 
} 

전화 requestLocationUpdates을 활동의 onCreate에 당신이 그것을 보여줄 필요가있을 때 다음 getLastLocation를 호출합니다.

또는 위치가 변경 될 때 콜백을 구현하여 활동을 알릴 수 있습니다.

+0

"getLastLocation()"메서드에서 위도와 경도를 얻는 방법에 대한 정보를 좀 더 제공해 줄 수 있습니까? –

0

아마도 마지막으로 알려진 위치를 얻고 있으며이 도구를 사용하면 아마도이 주소를 되 돌리는 중일 것입니다. 더 나은 도구 또는 FusedLocationProviderClient 만 사용해보십시오. 그러나, 나는 SmartLocation 라이브러리를 개인적으로 좋아한다.

https://github.com/mrmans0n/smart-location-lib

그것은 사용할 수없는 하나의 경우에 대체 공급자를 제공합니다. 라이브러리를 사용하는 데 약간의 학습 곡선이 있지만 일단 구현하면 멋지게 작동합니다.