반응형
앱을 만들다 보면, 간혹 지도에 현재 나의 위치를 표시해야 하는 경우가 생긴다. 그래서 간단하게 그 기능을 만들어 보도록 하겠다.
먼저 위치 정보를 수집하기 위해서 권한을 등록해야 한다. manifest 을 열어서 보면...
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
그리고 다음은 gradle 파일에 추가해야할 부분은
implementation 'com.google.android.gms:play-services-location:19.0.1'
이제 코드를 구현해볼 차례인데,
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
.....
import com.google.android.gms.location.FusedLocationProviderClient;
.....
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,
GoogleMap.OnMyLocationButtonClickListener,
GoogleMap.OnMarkerClickListener {
.....
private FusedLocationProviderClient fusedLocationClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
fusedLocationClient = LocationServices.getFusedLocationProviderClient(MapsActivity.this);
....
}
@Override
public void onMapReady(GoogleMap googleMap) {
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mMap = googleMap;
mMap.setOnMarkerClickListener(MapsActivity.this);
mMap.setOnMyLocationButtonClickListener(MapsActivity.this);
mMap.setMyLocationEnabled(true);
mUiSettings = googleMap.getUiSettings();
mUiSettings.setZoomControlsEnabled(true);
mUiSettings.setMyLocationButtonEnabled(true);
fusedLocationClient.getLastLocation()
.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location == null) return ;
lat = location.getLatitude();
lon = location.getLongitude();
LatLng sydney = new LatLng(lat, lon);
markerBinding.markerText.setText(placeName);
mMap.addMarker(new MarkerOptions().position(sydney).title(placeName)
.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(getApplicationContext(), markView))));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 30));
...
}
});
}
...
}
이런 정도의 구현으로 fusedLocationClient 을 이용해서 최근 확인된 위치 정보를 가져오고 그것을 이옹해서 지도등에 위치 표시를 하는 용도로 사용해 볼 수 있다.
사용한 예시는 이렇게 마무리 해 볼 수 있다.
반응형
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 : 구글 로그인 One Tap (오류사항 정리) (2) | 2022.01.19 |
---|---|
안드로이드 앱 만들기 Kotlin 이 뭐야 ? (2) | 2022.01.18 |
안드로이드 앱 만들기 : qrscan , barcode 스캐너 (2) | 2022.01.10 |
안드로이드 앱 만들기 : 리사이클 뷰의 활용성에 대해서. (3) | 2022.01.09 |
안드로이드 앱 만들기. 범블비가 업데이트 되었습니다. (0) | 2022.01.06 |