Android Fragment에 Google Map넣기 MapView

Have a good one!·2022년 8월 23일
0

인공지능사관학교

목록 보기
10/13

1. AndroidManifest.xml에 아래와 같이 API_KEY추가하기

아래와 같이 <activity 앞에 두 줄을 추가한다.

+        <meta-data android:name="com.google.android.geo.API_KEY"
+            android:value="{KEY를 넣어주세요}"/>
         <activity

2. Fragment Class에 MapView을 넣자

우선 Design에서 MapView를 추가하고 id를 mapView2 라고 했다.

(1) Interface OnMapsSdkInitializedCallback, OnMapReadyCallback 를 추가한다.
(2) Member변수로 GoogleMap이랑 MapView도 추가한다.

public class Page5Activity extends Fragment 
                           implements OnMapsSdkInitializedCallback, OnMapReadyCallback{
    private GoogleMap mMap;
    private MapView mMapView;

사실 OnMapsSdkInitializedCallback 요건 안해두 되긴 한다.

(3) onCreateView() 함수 부분에 다음과 같이 구현한다.

MapsInitializer.initialize(view.getContext(), MapsInitializer.Renderer.LATEST, this);

mMapView = (MapView) view.findViewById(R.id.mapView2);
mMapView.onCreate(savedInstanceState);
mMapView.getMapAsync(new OnMapReadyCallback() {
	@Override
	public void onMapReady(@NonNull GoogleMap googleMap) {
		mMap = googleMap;

		// Add a marker in Sydney and move the camera
		LatLng sydney = new LatLng(35.1488353, 126.9182881);
		mMap.addMarker(new MarkerOptions()
				.position(sydney)
				.title("Marker in Sydney"));
		mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
	}
});

(4) MapView가 엄청 버벅이는 것을 막기 위해 다음 코드를 추가한다.

    @Override
    public void onResume() {
        mMapView.onResume();
        super.onResume();
    }

    @Override
    public void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        mMapView.onLowMemory();
    }

(5) 강제로 onMapReady() 함수를 재정의 해가 되는데, 이 경우 아래와 같이 해준다.

    @Override
    public void onMapReady(@NonNull GoogleMap googleMap) {
        googleMap.addMarker(new MarkerOptions()
                .position(new LatLng(0, 0))
                .title("Marker"));
    }

3. 완성 결과

하다보면, Gradle에 뭔가 추가하라고 나오는데, 자동으로 다 되도록 해주자.
ex> implementation 'com.google.android.gms:play-services-maps:18.1.0' 추가 같은 것..

profile
Have a good one!

0개의 댓글