[Flutter / 플러터] 구글 지도 마커 Google Map Marker

반응형

지도를 연결하는 이유는 대부분 마커를 띄워주고 싶어서 일텐데

 

[Flutter / 플러터] 구글지도 사용하기 Google Map - Working Dumbo (tistory.com)

 

[Flutter / 플러터] 구글지도 사용하기 Google Map

google_maps_flutter | Flutter Package (pub.dev) google_maps_flutter | Flutter Package A Flutter plugin for integrating Google Maps in iOS and Android applications. pub.dev 위 링크의 ReadMe를 잘 따라하면 된다! 하지만 처음 읽어보는 사

dumbokim.tistory.com

저번에 구글 지도를 연결해보았으니

마커를 띄워봅시다

 

저는 강남역을 첫 위치로 띄운 후 맛집 3곳을 마커로 띄워보겠습니다

 

먼저 지도 첫 위치를 강남역으로 설정할게요

static const CameraPosition _gangnam = CameraPosition(
  target: LatLng(37.4988064, 127.0274241),
  zoom: 15,
);

구글 지도에 initialCameraPosition을 저 값으로 설정해줍니다

initialCameraPosition: _gangnam,

 

마커를 띄워주려면 구글 지도 위젯의 marker 에 마커들을 넣어주면 됩니다.

markers: _markers,

 

저 _markers 는 어디서 나왔을까요?

먼저 구글 지도 markers 는 마커 객체의 집합으로 이루어집니다.

 

그래서 _markers를 이렇게 설정해줍니다

final _markers = <Marker>{};

 

마커 집합이 생겼으니 값이 있어야 구글 지도가 마커를 띄워줄 수 있겠죠?

 

그런데 아직 맛집 정보가 없으니 맛집 정보를 기록해보겠습니다

final _foodies = [
  {
    "name": "정통집",
    "latitude": 37.4999613,
    "longitude": 127.0281036,
  },
  {
    "name": "정돈",
    "latitude": 37.5039059,
    "longitude": 127.0263972,
  },
  {
    "name": "파이브가이즈",
    "latitude": 37.5012238,
    "longitude": 127.0256401,
  },
];

객체로 생성하면 더 좋겠지만 편하게 Map ({ } 안에 들어간 데이터)으로 맛집 데이터를 생성했습니다.

 

이제 이걸 _markers에 넣어줘야할텐데 그럼 Marker 객체로 이 맛집 값들을 변경해주어야 합니다.

@override
void initState() {
  _markers.addAll(
    _foodies.map(
      (e) => Marker(
        markerId: MarkerId(e['name'] as String),
        infoWindow: InfoWindow(title: e['name'] as String),
        position: LatLng(
          e['latitude'] as double,
          e['longitude'] as double,
        ),
      ),
    ),
  );
  super.initState();
}

 

화면 위젯이 나타날 때 실행되는 initState 안에서 맛집들을 Marker 객체로 변경 후 넣어줍니다.

그럼 지도가 나타날 때 바로 마커로 나타날거예요

 

여기서 as String, as double 은 왜 넣어줘야할까요?

제가 맛집 데이터를 Map<String, dynamic> 으로 만들어주었기 때문에 형 변환을 해줘야 IDE 에서 오류를 내뱉지 않습니다.

.map 과 Map, 객체, 형 변환 에 대한건 천천히 알아가도 좋습니다.

대략 어떤 원리로 지도에 마커를 넣는게 지금은 더 중요할테니!

infoWindow는 밑에서 설명하겠습니다.

 

이제 이 코드를 실행해봅시다.

 

 

구글 지도는 이미 다른 마커들이 많아서 헷갈리긴 한데 빨간 마커가 제가 넣어준 마커들입니다.

이 마커들을 클릭하면 지도가 움직이면서 다음과 같이 나타납니다

 

글자가 뜨는건 InfoWindow 값을 설정해주었기 때문에 이렇게 나타나게 됩니다.

저 InfoWindow 안에 제목만 넣어줬지만, 내용도 입력해주면 밑에 내용도 함께 나타납니다.

 

이렇게 구글 마커를 삽입해보았습니다

반응형