아래와 같이 <activity
앞에 두 줄을 추가한다.
+ <meta-data android:name="com.google.android.geo.API_KEY"
+ android:value="{KEY를 넣어주세요}"/>
<activity
우선 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"));
}
하다보면, Gradle에 뭔가 추가하라고 나오는데, 자동으로 다 되도록 해주자.
ex>implementation 'com.google.android.gms:play-services-maps:18.1.0'
추가 같은 것..