2026/02/24

오늘의 이야기



 


앱을 만들다 보면, 간혹 지도에 현재 나의 위치를 표시해야 하는 경우가 생긴다. 그래서 간단하게 그 기능을 만들어 보도록 하겠다.


 


먼저 위치 정보를 수집하기 위해서 권한을 등록해야 한다.  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 을 이용해서 최근 확인된 위치 정보를 가져오고 그것을 이옹해서 지도등에 위치 표시를 하는 용도로 사용해 볼 수 있다. 


 


 





 


사용한 예시는 이렇게 마무리 해 볼 수 있다.


 





댓글 없음:

댓글 쓰기

오늘의 이야기

https://www.raspberrypi.com/products/raspberry-pi-high-quality-camera/   Buy a Raspberry Pi High Quality Camera – Raspberry Pi 12.3 megapixe...