본문 바로가기

프로그래밍/App 개발

[구글맵] GoogleMap Fragment내에서 구현

반응형

참조: http://answerofgod.tistory.com/entry/google-maps-android-API를-이용한-지도-2-Fragment 



◎ GoogleMap Activity가 아닌 Fragment내에서 구현하는 방법


Google API를 사용하는 예제가 너무 많지만, 정작 Fragment내에서 구현하려고 하니 잘 되지 않는다 ...

기존 예제는 Fragment<>에 com.google.android.gms.maps.Mapfragment  로 구현을 했는데... Fragment내에서는 Fragment를 사용 이 잘 안되니...


Fragment내에서 구현을 하기 위해서는 

MapView를 사용하는 것이 유리하다


기존 Fragment를 구현하려고 하면 NullPointerException 이 발생한다. 그 이유는 아마 OnCreate에서 Map을 실행하지 않기 때문인듯 싶다.


그래서 MapView를 이용해서 구현을 하였다.


<아래와 같이 Fragment에 implements로 OnMapReadyCallback을 사용해준다.>

public class GMapFragment extends Fragment implements OnMapReadyCallback{


이후, 아래와 같이 

1. Map View를 선언

2. onCreate 와 OnResume으로 반드시 실행한다음.

3. getMapAsync를 실행하면 된다.


그러면 onMapReady()함수를 불러오기 때문에 구글 맵이 화면에 나오게 된다.

이제 onMapReady에서 다양한 코딩을 해주면 되겟다!!~


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_map, container, false);

/*Fragment내에서는 mapView로 지도를 실행*/
mapView = (MapView)rootView.findViewById(R.id.mapView2);
mapView.onCreate(savedInstanceState);
mapView.onResume();
mapView.getMapAsync(this); // 비동기적 방식으로 구글 맵 실행


return rootView;
}


후...

이거 하나 하는데 왜케 어렵냐 ㅠ




반응형