[안드로이드 구글 맵 - 2] SupportMapFragment를 사용한 안드로이드 구글 맵 마커 구현 예제
1. Adnroid Google Maps
Android에서는 개발자에게 다양한 API를 제공하는데 Google Map API가 그 중 하나입니다. Google Map API를 사용하기 위해서는 Key를 발급 받아야 하는데 그 내용은 이전 포스팅에서 다뤘습니다. 그럼 Google Map은 무엇이며 어떻게 사용될까요? Google Map은 Google에서 제공하는 일종의 세계 지도이며, 세계 곳곳에 나타낼 수 있는 모든 지역 정보들이 담겨있습니다. 또한 위도, 경도를 통해 특정 위치에 '마커'를 표시할 수 있으며, 'TITLE'도 설정할 수 있습니다. 다른 위젯들 처럼 이벤트 처리도 가능하며, Google Developers에서 제공하는 'Map 유틸리티'를 통해 다양한 기능도 구현할 수 있습니다. 아래 그림을 통해 간단히 알 수 있습니다.
[그림 1] Android Google Map
왼쪽 이미지는 유틸리티를 통해 많은 마커를 숫자로 만들어 준 것이고, 가운데와 오른쪽은 개별 마크와 마커를 선택했을때 나타나는 TITLE을 보여준 것입니다. 이번 포스팅에서는 원하는 위치에 마커를 생성하고 TITLE을 띄우는 방법에 대해서 다룰 것입니다.
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="Key 입력 공간" />
compile 'com.google.android.gms:play-services-maps:10.2.0'
[그림 3] gradle compile
android:name="com.google.android.gms.maps.SupportMapFragment"
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
// 구글 맵 참조변수 생성
GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// SupportMapFragment을 통해 레이아웃에 만든 fragment의 ID를 참조하고 구글맵을 호출한다.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this); //getMapAsync must be called on the main thread.
}
> onCreate()에서 getMapAsync()를 통해 onMapReady()가 자동 호출 되면서 아래 작업을 수행.
@Override
public void onMapReady(GoogleMap googleMap) {
// 구글 맵 객체를 불러온다.
mMap = googleMap;
// 서울 여의도에 대한 위치 설정
LatLng seoul = new LatLng(37.52487, 126.92723);
// 구글 맵에 표시할 마커에 대한 옵션 설정
MarkerOptions makerOptions = new MarkerOptions();
makerOptions
.position(seoul)
.title("원하는 위치(위도, 경도)에 마커를 표시했습니다.");
// 마커를 생성한다.
mMap.addMarker(makerOptions);
//카메라를 여의도 위치로 옮긴다.
mMap.moveCamera(CameraUpdateFactory.newLatLng(seoul));
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="peace.googlemapexample.MainActivity">
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:text="Google Map !!"
android:padding="10dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<fragment android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textview" />
</android.support.constraint.ConstraintLayout>
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
// 구글 맵 참조변수 생성
GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// SupportMapFragment을 통해 레이아웃에 만든 fragment의 ID를 참조하고 구글맵을 호출한다.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this); // getMapAsync must be called on the main thread.
}
@Override
public void onMapReady(GoogleMap googleMap) {
// 구글 맵 객체를 불러온다.
mMap = googleMap;
// 서울에 대한 위치 설정
LatLng seoul = new LatLng(37.52487, 126.92723);
// 구글 맵에 표시할 마커에 대한 옵션 설정
MarkerOptions makerOptions = new MarkerOptions();
makerOptions
.position(seoul)
.title("원하는 위치(위도, 경도)에 마커를 표시했습니다.");
// 마커를 생성한다.
mMap.addMarker(makerOptions);
//카메라를 서울 위치로 옮긴다.
mMap.moveCamera(CameraUpdateFactory.newLatLng(seoul));
}
}
'안드로이드 > API' 카테고리의 다른 글
[안드로이드 구글 맵 - 5] OnMarkerClickListener 사용 - 마커 클릭 이벤트처리 (0) | 2018.09.12 |
---|---|
[안드로이드 구글 맵 - 4] Marker 생성 - 마커 여러개 생성하기 (0) | 2018.09.12 |
[안드로이드 구글 맵 - 3] Marker Option사용법 - 마커 아이콘, 타이틀, 내용, 투명도 등.. (0) | 2018.09.12 |
[안드로이드 구글 맵 - 1] Google Maps API Key 발급받기. (0) | 2018.09.12 |