사용자 위치를 새로 고치려고 시도했습니다.Android - 활동 시작시 사용자 위치를 새로 고침 할 수 없습니다.
내 앱에서 사용자의 현재 위치를 표시하는지도를 시작하지만 locationManager.getLastKnownLocation()
은 캐시 위치를 사용하므로 다른 위치 인 을 반환합니다.
콜백 OnMapReady
에서지도상의 정확한 위치를 표시 할 수 있도록 마지막으로 알려진 위치를 현재 위치와 어떻게 비교할 수 있습니까?
StackOverflow에서 발견 된 모든 예제는 LocationListener.onLocationChanged()
메서드를 사용하지만 작업 시작시 위치를 새로 고쳐야합니다 (필요한 경우).
코드 :
private static final String TAG_MAP_LOAD_FAILED = "FAIL LOADING MAP STYLE";
private static final String TAG_MAP_PARSING_FAILED = "FAIL PARSING MAP STYLE";
private GoogleMap mMap;
private LatLng mMyCoordinates;
private LocationManager mLocationManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
try{
boolean success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.style_mapjson));
if(!success){
Log.e(TAG_MAP_PARSING_FAILED, "Failed parsing JSON Style");
}
}catch (Resources.NotFoundException ex){
Log.e(TAG_MAP_LOAD_FAILED, "Can't find style. Error:", ex);
}
mMap.setIndoorEnabled(false);
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(mMyCoordinates);
markerOptions.title("Marker in my location");
mMap.addMarker(markerOptions);
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(mMyCoordinates, 15);
mMap.moveCamera(cameraUpdate);
mMap.getUiSettings().setRotateGesturesEnabled(false);
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
OBS : 그것은 실패한 시도의 전체지고 있었기 때문에 내가 코드를 정리. 그것이 어떻게 구조화되어 있는지 보여 주기만하면됩니다.
대신 FusedLocation
을 사용해야합니까?
예. 'LocationManager'는 다른 구현물을 사용합니다. 연결 콜백을 얻기 위해'GoogleMap'과 함께 사용할 수 있다고 생각지 않습니다. 그 아이디어는 어디에서 얻었습니까? 이를 위해 API 클라이언트가 필요합니다. [공식 문서] (https://developers.google.com/maps/documentation/android-api/start)가 아닌 SO에서 가장 먼저 답변을 찾는 이유는 다른 포럼의 문제입니다. 끝까지 읽기를 시도하면 해결할 수 있습니다. 그리고 네, 사용 중지 된 코드를 사용하지 않는 한'FusedLocation'을 사용하십시오 – Chisko