본문 바로가기
프로그래밍/Flutter-Dart

[Flutter] Google Map API 사용하기

by 채연2 2022. 2. 28.

 

 

 

 

하나하나 자세하게 알려주는 블로그가 없어 내가 직접 포스팅한다.

 

 

우선 Google Cloud Platform으로 이동하자!

Google Cloud Platform 이동

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

 

 

그럼, 다음과 같이 상단에 Google Cloud Platform 옆 프로젝트 선택 스피너가 보일 것이다. 

 

 

클릭하면 다음과 같이 프로젝트 선택 창이 뜬다

우측 상단  [새 프로젝트]  클릭

 

 

그럼 다음과 같이 프로젝트 이름 입력 란이 뜰 것이다. 아무렇게나 입력해도 상관 없는 듯 하다

입력 후  [만들기]  클릭

 

 

그럼 상단에 방금 만든 프로젝트 이름이 뜬 것을 확인할 수 있다

그럼 좌측 상단에 메뉴 아이콘을 클릭하자

 

 

사이드 메뉴에서 [API 및 서비스] 클릭

 

 

그럼 다음과 같은 화면이 뜬다.

여기서 상단 가운데에 [ + API 및 서비스 사용 설정 ] 클릭

 

 

그럼 API 라이브러리 페이지로 이동하게 된다

검색어에 map이라고 검색해보자

 

 

스크롤을 내리다보면 [ Maps SDK for iOS ] , [ Maps SDK for Android ] 두 개의 목록이 보일 것이다

저 두 개의 API를 사용할 것이다. 각각 클릭해서 사용 버튼을 눌러주자

 

 

사용 클릭

 

 

사용 버튼을 누르면 아래와 같은 페이지로 이동한다

여기서 내가 사용 설정한 API 목록을 볼 수 있다

사이드 메뉴에서 [사용자 인증 정보] 메뉴를 클릭하자

 

 

다음 페이지에서 우측 상단에 [ + 사용자 인증 정보 만들기 ] 클릭

 

 

[ + 사용자 인증 정보 만들기 ] 클릭하면 아래와 같이 뜨는데 여기서 [API 키] 클릭

 

 

그럼 다음과 같이 키 생성되었다고 창이 뜬다

그 창에서 우측 하단에 [키 제한] 버튼 클릭하자

 

 

 

다음과 같이 우선 Android API Key를 먼저 만들어 볼 것이다

이름, 애플리케이션 제한 사항, API 제한 사항은 다음과 같이 입력해주고

Android 앱의 사용량 제한에서 [항목 추가]를 클릭하자

 

 

그럼 다음과 같은 입력 란이 나올 것이다

여기서 패키지 이름은 만든 프로젝트의 패키지 이름을 넣으면 된다

패키지 이름을 모른다면 Project_Name\android\app\src\main\AndroidManifest.xml 에 가면 나온다

그 밑에 SHA-1 인증서 디지털 지문이 뭔지 모를 수도 있다

그럼 위 화면의 API 키를 특정 Android 애플리케이션으로 제한하려면 어떻게 해야 하나요? 에서 Windows 타이틀 밑에 명령문을 복사하자

 

 

이와 같은 명령문이다

이 명령문을 cmd 창 열어서 실행시키면 된다

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

 

 

그럼 다음과 같이 나온다

스크롤을 내리면 인증서 지문SHA1 이라고 나올 것이고 그것을 복사해서 SHA-1 인증서 디지털 지문에 붙여넣으면 된다

 

※ 혹시, debug 모드 말고 release 모드에서 구글 맵을 띄우고 싶다면 아래를 참조하면 된다.

https://cording-cossk3.tistory.com/224

 

[Flutter] Google Map API Release 시 뜨지 않는 이슈

이런... 오전부터 개삽질했다. https://cording-cossk3.tistory.com/198 [Flutter] Google Map API 사용하기 하나하나 자세하게 알려주는 블로그가 없어 내가 직접 포스팅한다. 우선 Google Cloud Platform으로 이동하자!

cording-cossk3.tistory.com

 

 

다 입력 후 저장을 누르면 다음과 같이 API 키가 추가된 것을 볼 수 있다

 

 

그럼 프로젝트로 돌아가서 AndroidManifest.xml 파일에 설정을 추가해주자

Project_Name\android\app\src\main\AndroidManifest.xml

<manifest ...>
    <application ...>
        <activity ...>
            ...
        </activity>
        
        ...
        
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="API Key"
            />
            
    </application>
</manifest>

 

 

 

다음은 iOS API Key를 만들 것이다

이름, 애플리케이션 제한사항, API 제한사항을 다음과 같이 입력해준다

그리고, 다음 번들 식별자 중 하나가 포함된 iOS 애플리케이션의 요청 수락 에서 [항목 추가] 를 클릭해서 번들ID만 입력해 주면 된다

번들 ID를 모를 경우 아래와 같이 확인하면 된다

 

 

프로젝트로 돌아가서

Project_Name\ios\Runner.xcodeproj\project.pbxproj 를 열고

PRODUCT_BUNDLE_IDENTIFIER

다음 단어를 찾아주면 된다

 

 

iOS API Key를 다 만들고 나면 프로젝트로 가서 AppDelegate.swift에 코드를 추가해주자

Project_Name\ios\Runner\AppDelegate.swift

 

 

import UIKit
import Flutter
import GoogleMaps  //*추가*

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GMSServices.provideAPIKey("API Key")  //*추가*
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

 

 

 

그리고, lib\main.dart 파일에 다음과 같이 샘플 코드를 넣어주고 실행해보자

// @dart=2.9

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

void main() {
  runApp(MaterialApp(
      home: MapSample()
  ));
}

class MapSample extends StatefulWidget {
  @override
  State<MapSample> createState() => MapSampleState();
}

class MapSampleState extends State<MapSample> {
  Completer<GoogleMapController> _controller = Completer();

  static final CameraPosition _kGooglePlex = CameraPosition(
    target: LatLng(37.42796133580664, -122.085749655962),
    zoom: 14.4746,
  );

  static final CameraPosition _kLake = CameraPosition(
      bearing: 192.8334901395799,
      target: LatLng(37.43296265331129, -122.08832357078792),
      tilt: 59.440717697143555,
      zoom: 19.151926040649414);

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: GoogleMap(
        mapType: MapType.hybrid,
        initialCameraPosition: _kGooglePlex,
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: _goToTheLake,
        label: Text('To the lake!'),
        icon: Icon(Icons.directions_boat),
      ),
    );
  }

  Future<void> _goToTheLake() async {
    final GoogleMapController controller = await _controller.future;
    controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
  }
}

 

 

 

.... 나는 다음과 같이 API Key를 다시 확인해 보라는 에러가 떴다

Unhandled Exception: PlatformException(error, API key not found.  Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml, null, java.lang.RuntimeException: API key not found.  Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml

 

 

구글링 해본 결과 다음과 같이 클린 해주고 다시 실행시키면 된다

flutter clean

 

 


같이 보면 좋은 글 ▼

https://cording-cossk3.tistory.com/203

 

[Flutter] 네이버 Maps API 사용하기

네이버 지도 api 사이트 바로가기 NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification www.ncloud.com 위 링크를 통해 이동하면 아래와 같은 화면

cording-cossk3.tistory.com

 

https://cording-cossk3.tistory.com/208

 

[Flutter] Kakao Map api 사용하기

카카오 developer 사이트 바로가기 카카오계정 accounts.kakao.com [ + 애플리케이션 추가하기] 클릭 앱 이름, 사업자명 입력 후 저장 그럼 다음과 같이 리스트에 애플리케이션이 추가된 것을 확인 가능.

cording-cossk3.tistory.com

 

https://cording-cossk3.tistory.com/210

 

[Flutter] Tmap API 및 Tmap 앱 연동 (1) - Android편

https://openapi.sk.com/ SK open API Recopick 레코픽은 성능과 안정성이 검증된 실시간 개인화 추천엔진과 SK그룹사 데이터를 기반으로 다양한 개인화 서비스를 제공합니다. SK planet openapi.sk.com 위 사이트

cording-cossk3.tistory.com

 

https://cording-cossk3.tistory.com/212

 

[Flutter] Tmap API 및 Tmap 앱 연동 (2) - iOS편

후... 반나절을 삽펐다. tmap에서 ios sdk를 다운받고 압축 해제를 하면 아래와 같이 내용물이 들어있다. 혹시 sdk를 어떻게 다운받는지 모른다면 ☞여기😆☜를 클릭해서 보면 된다. 실제 디바이스

cording-cossk3.tistory.com

 

https://cording-cossk3.tistory.com/214

 

[Flutter] naver_map_plugin 사용하여 특정 위치로 이동하기

ㅜㅜㅜㅜ 진짜 너무 헤맸다. 정보가 너무 없어서 내가 기능 추가해서 라이브러리를 만들어야 하나.. 하면서 git 프로젝트를 다운받아 코드를 천천히 살펴보다가 발견했다........ final controller = awai

cording-cossk3.tistory.com

 

 

 

 

320x100

'프로그래밍 > Flutter-Dart' 카테고리의 다른 글

[Flutter] Splash 화면  (0) 2022.03.08
[Flutter] 네이버 Maps API 사용하기  (0) 2022.03.08
[Flutter] Text, Icon, Image  (0) 2022.02.16
[Flutter] SizedBox, Spacer  (0) 2022.02.16
[Flutter] Flexible, Expanded  (0) 2022.02.16

댓글