見出し画像

[Flutter]google_maps_flutterでGoogleマップを表示

今回はFlutterアプリにGoogleマップを表示する方法についてご紹介します!

google_maps_flutterとは

google_maps_flutterはFlutterのプラグインの一つで、アプリ内にGoogle Mapsの地図を簡単に組み込むことができます。

セットアップ

第一に、このプラグインを使うにはFlutterの環境構築やGoogle Maps Platformの設定などが必要となります。詳しい説明は公式サイトをチェック。

google_maps_flutterの導入

pubspec.yamlファイルにgoogle_maps_flutter: ^2.2.8を追加。
(2023年5月時点で2.2.8が最新版だったので、このバージョンを使用)

dependencies:
  flutter:
    sdk: flutter
  google_maps_flutter: ^2.2.8

その後、ターミナルで以下コマンドを実行。

flutter pub get

コード例

google_maps_flutterの基本的なコードを以下に記載します。

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Google Maps Example'),
        ),
        body: GoogleMap(
          initialCameraPosition: CameraPosition(
            target: LatLng(35.6895, 139.6917), // 東京
            zoom: 10,
          ),
        ),
      ),
    );
  }
}

まずはファイルにgoogle_maps_flutterをimportします。

import 'package:google_maps_flutter/google_maps_flutter.dart';

StatelessWidgetを継承したMyAppクラスで、ビジュアルレイアウト構造を提供するScaffoldウィジェットを使用しています。
Scaffoldのbody:には、google_maps_flutterプラグインのGoogleMapウィジェットを使用し、mapを表示しています。
GoogleMapウィジェットで使えるプロパティは様々ですが、ここではinitialCameraPositionプロパティを使用し、地図の初期表示位置とズームレベルを設定しています。この例では、アプリ起動時に東京(経度: 139.6917, 緯度: 35.6895)を中心にズームレベル10でmapを表示するようにしました。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Google Maps Example'),
        ),
        body: GoogleMap(
          initialCameraPosition: CameraPosition(
            target: LatLng(35.6895, 139.6917), // 東京
            zoom: 10,
          ),
        ),
      ),
    );
  }

他にも例えば、GoogleMapウィジェットでmarkersプロパティを使えばMapの任意の場所にマーカーを表示できます。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Google Maps Example'),
        ),
        body: GoogleMap(
          initialCameraPosition: CameraPosition(
            target: LatLng(35.6895, 139.6917), // 東京
            zoom: 10,
          ),
       markers: {
            Marker(
              markerId: MarkerId('marker_1'),
              position: LatLng(35.6895, 139.6917), // 東京
              infoWindow: InfoWindow(
                title: '東京',
                snippet: 'これは東京です。',
              ),
            ),
            Marker(
              markerId: MarkerId('marker_2'),
              position: LatLng(35.6762, 139.6503), // 渋谷
              infoWindow: InfoWindow(
                title: '渋谷',
                snippet: 'これは渋谷です。',
              ),
            ),
          },
        ),
      ),
    );
  }

このコードでは、マーカーを東京に配置し、マーカーをクリックすると情報ウィンドウが表示されます。
MarkerウィジェットのmarkerIdプロパティには、一意のIDを指定します。
infoWindowプロパティには、マーカーの詳細情報を表示するためのInfoWindowウィジェットを指定します。これで地図上のマーカーをタップすると、title, snippetに記載された'渋谷'などの情報が画面に表示されるようになります。

まとめ

google_maps_flutterを使えば、地図情報を活用したアプリケーションを簡単に作ることが可能となります。
色々触ってみると、たくさんの機能があることに驚かされると思います!


この記事が気に入ったらサポートをしてみませんか?