이전에도 사용했던 소스인데
메인소스 부분이
mapFragment = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getmap();
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
위에서 아래로 변경한 이후로 계속 GpsInfo에서 위도, 경도를 0,0 으로 받아오고 있습니다.
마쉬멜로우 버전에서도 사용했었으며, 매니패스트도 정상 설정이 되어있습니다.
(마쉬멜로우 퍼미션관련 설정)
제 짧은 생각으로는 위에서 변경된 소스 한줄 때문에
public void onMapReady(GoogleMap googleMap) {
위 메소드를 사용하여 구글맵에 대한 설정을 해주는데 여기서 문제가 있어보이는데
아직 방법을 못찾고 있습니다.
googleMap.setMyLocationEnabled(true);
위와 같은 설정은 되는데 GpsInfo에 있는 아래 두줄 부분에서 못받아 오는 이유를 잘 모르겠습니다...
latitude = gps.getLatitude();
longitude = gps.getLongitude();
혹시 같은 문제를 겪어보신 분이 계시다면 답변 부탁드립니다.
아래 소스 첨부하였습니다.
Main 소스입니다.
public class Report_Step1 extends AppCompatActivity implements OnMapReadyCallback {
MapFragment mapFragment;
GpsInfo gps = new GpsInfo(Report_Step1.this);
double latitude;
double longitude;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report_step1);
mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(Report_Step1.this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
latitude = gps.getLatitude();
longitude = gps.getLongitude();
LatLng userlocation = new LatLng(latitude, longitude);
Log.e("LatLng", String.valueOf(userlocation));
googleMap.setMyLocationEnabled(true);
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userlocation, 16));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(16), 2000, null);
}
}
GpsInfo.class 소스 입니다.