본문 바로가기
Study/Android

google maps android API를 이용한 지도 2 - Fragment

by Answer Choi 2015. 10. 23.
반응형

이번엔 Google maps android API를 Activity가 아닌 fragment안에서 구현하는 방법입니다.


먼저 XML입니다.


1
2
3
4
5
6
<com.google.android.gms.maps.MapView
    android:id="@+id/map"
    android:layout_width="fill_parent"
    android:layout_height="0.0dip"
    android:layout_weight="8"
    android:name="com.google.android.gms.maps.MapFragment" />
cs


Activity로 구현할 때는 fragment로 했지만, fragment 안에서 구현할려니 잘안되더 군요.


fragment로 구현하게 되면 NullPointerException을 발생시킵니다.


그래서 MapView로 구현을 하였습니다.


그리고 name에는 똑같이 MapFragment로 해줍니다.


마찬가지로 API 12 밑에서는 SupportMapFragment로 해야 됩니다.


Java 코드입니다.


1
public class runningFrag  extends Fragment implements OnMapReadyCallback
cs


fragment이기 때문에 fragment를 상속 받았고 역시 OnMapReadyCallback을 interface했습니다.


초기화 코드는 좀 더 길어집니다.


1
2
3
4
MapView mapview=(MapView)view.findViewById(R.id.map);
    mapview.onCreate(savedInstanceState);
    mapview.onResume();
    mapview.getMapAsync(this);
cs


Line 1 : MapView이므로 MapView로 선언했습니다.


Line 2~3 : MapView는 Create와 Resume을 해줘야 합니다. 안그러면 아무것도 나타나지 않습니다.


그리고 Create를 하기위해서는 fragment의 onCreateView 의 Bundle을 전달 받아야 합니다.


Line 4 : onMapReady callback을 연결해 줍니다.


그리고 마찬가지로 onMapReady안에서 맵에 대한 세팅을 해주시면 됩니다.


구현된 화면입니다.




반응형

인기글