インストール ガイド

インストール ガイド

出典:ArcGIS Maps SDK for Flutter - Guide - Install and set up

このインストール ガイドでは、ArcGIS Maps SDK for Flutter のインストールとセットアップ手順を紹介します。マップを表示する方法については「アプリの作成」のチュートリアルをご覧ください。

ArcGIS Maps SDK for Flutter をインストールする前に、開発マシンが 動作環境 を満たしていることを確認してください。

Flutter のバージョンは、Esri のリリース サイクルの間に頻繁に更新されるため、パッケージの新しいリリースごとに、その時点で利用可能な最新の Flutter バージョンに対してビルドおよび検証を行っています。Esri のリリース期間の間に Flutter の新しいバージョンがリリースされた場合は、最新の SDK との互換性に関するガイダンスを共有します。
Flutter 3.44.x に関する注意事項と依存関係の要件につきましては、こちらをご覧ください。

Flutter パッケージ リポジトリー

ArcGIS Maps SDK for Flutter は、Flutter のパッケージ リポジトリーである pub.dev を使用して、VS Code で Flutter プロジェクトに統合することができます。

VS Code

  1. VS Code で Flutter プロジェクトを開きます。

  2. View > Terminal を開きます。

  3. プロジェクトの依存関係に arcgis_maps パッケージを追加します。

    dart pub add arcgis_maps

    dart pub add は、arcgis_maps パッケージを依存関係として pubspec.yaml に追加し、pubspec.yaml を解決するために依存関係を取得します。

  4. 以下のコマンドを実行して、すべての依存関係を最新の互換性のあるバージョンにアップデートします。

    flutter pub upgrade

    このコマンドを実行すると、アプリが依存しているパッケージのみがアップデートされます。

  5. arcgis_maps_core をダウンロードしてインストールします。

    dart run arcgis_maps install

    このコマンドを実行すると、ArcGIS Maps のコア機能のバイナリー配布が Flutter プロジェクトにダウンロードされ、セットアップされます。ソース管理にチェックする場合は、.gitignore ファイルに arcgis_maps_core を追加することをお勧めします。

この API を使用するには、以下の import 文を dart コード(.dart)ファイルに追加します。

import 'package:arcgis_maps/arcgis_maps.dart';

プラットフォーム固有の構成

Android、iOS、またはその両方のアプリを開発する際、Flutter のツールセットでは、いくつかの設定バージョンに対してデフォルト値が設定されています。これらは、新しいプロジェクトを作成する際にあらかじめ設定されます。以下に示す更新内容は、最新バージョンの ArcGIS Maps SDK for Flutter パッケージを使用してアプリケーションをコンパイルするために、これらのデフォルト設定に変更を加える必要があるものです。詳細については、システム要件のページをご覧ください。

  1. 以下の最低要件を更新します。

    • Android の最低 SDK バージョン: 28
    android/app/build.gradle.kts
    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId = "com.esri.flutter_project_template"
        // You can update the following values to match your application needs.
        // For more information, see: https://flutter.dev/to/review-gradle-config.
    	minSdk = 28 // 変更
        targetSdk = flutter.targetSdkVersion
        versionCode = flutter.versionCode
        versionName = flutter.versionName
    }

パーミッションを必要とする機能

ArcGIS Maps SDK for Flutter に依存するアプリケーションをデプロイするには、以下の権限が必要です。オンライン リソースにアクセスする権限とデバイスの GPS にアクセスする権限を追加します。なお、アプリが位置情報へのアクセスを必要とする API を実際に使用している場合にのみ、ユーザーに位置情報のアクセス許可を求めるプロンプトが表示されます。

android/app/src/main/AndroidManifest.xml
	<manifest xmlns:android="http://schemas.android.com/apk/res/android">
		<!-- 追加開始 -->
	    <uses-permission android:name="android.permission.INTERNET" />
	    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
	    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
		<!-- 追加終了 -->
	    <application
	        android:label="flutter_project_template"
	        android:name="${applicationName}"
	        android:icon="@mipmap/ic_launcher">

ユーザー認証の有効化

ユーザー認証にシステム ブラウザーの使用が必要な場合は、以下を追加する必要があります。

android/app/src/main/AndroidManifest.xml
	</activity> <!-- application タグ内の activity タグ-->

	<!-- 追加開始 -->
    <activity
        android:name="com.linusu.flutter_web_auth_2.CallbackActivity"
        android:exported="true">
        <intent-filter android:label="flutter_web_auth_2">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="YOUR_CALLBACK_URL_SCHEME_HERE" />
        </intent-filter>
    </activity>
	<!-- 追加終了 -->

YOUR_CALLBACK_URL_SCHEME_HERE を、ポータルOAuth 認証情報を設定したときに使用したリダイレクト URL のスキームに置き換えてください。 これは、ログイン ワークフローが完了した後、ブラウザーがアプリに通信して戻るために必要です。

Flutter 3.44 以降、iOS アプリケーションのデフォルトの依存関係管理ツールとして、CocoaPods に代わって Swift Package Manager が採用されました。この変更に対応するため、Flutter Maps SDK パッケージである arcgis_maps では、CocoaPods から Swift Package Manager への移行が行われました。Swift Package Manager を使用して ArcGIS Maps SDK for Flutter パッケージを利用するように iOS プロジェクトを設定する方法については、新しい iOS アプリケーションまたは既存の iOS アプリケーションの移行を参照してください。

新しい iOS アプリケーション

arcgis_maps パッケージを依存関係として使用する新しい iOS アプリケーションの場合、iOS Deployment Target をバージョン 18 に更新し、アプリケーションで Swift Package Manager を有効にする必要があります。プロジェクトに必要な変更を加えるには、以下の手順に従ってください。

  1. ターミナルを開き、Flutter プロジェクトのディレクトリーに移動します。

  2. 以下のコマンドを実行して、プロジェクトのデフォルトの Xcode ワークスペースを開きます。

    open ios/Runner.xcworkspace
  3. Xcode で、Runner プロジェクトを選択します。Build Settings タブに移動し、Deployment セクションを見つけます。iOS Deployment Target をバージョン 18 に設定し、Xcode を閉じます。

  4. Flutter 3.44 以降、Swift Package Manager はデフォルトで有効になっています。Swift Package Manager が有効になっていることを確認するには、2 つの方法があります。1 つ目の方法は、単一のプロジェクトに対して Swift Package Manager を有効にするものです。これにより、グローバルな設定に関係なく、ローカル開発環境でそのプロジェクトを読み込むすべてのユーザーが Swift Package Manager を使用するようになります。

    pubspec.yaml
    # ...
    
    flutter:
      	uses-material-design: true
    
        #追加開始
      	config:
    			enable-swift-package-manager: true
    #追加終了

    2 つ目のアプローチは、すべてのプロジェクトに対して Swift Package Manager をグローバルに有効にするもので、Flutter 3.44 以降ではデフォルトで有効になっています。以下のコマンドを実行することで、この機能を有効にし、確認することができます。

    flutter config --enable-swift-package-manager

    詳細については、Flutter のドキュメント「アプリ開発者向け Swift Package Manager(英語)」を参照し、プロジェクトに最適なアプローチを選択してください。

既存の iOS アプリケーションの移行

バージョン 300.0 以前の arcgis_maps パッケージを使用している既存の iOS アプリケーションについては、以下の手順に従って、プロジェクトを Swift Package Manager に対応するように移行してください。

この手順では、プロジェクトの Podfile に記述されているカスタム コードが ArcGIS Maps SDK for Flutter のみであることを前提としています。
  1. 開発用マシンがシステム要件を満たしていることを確認してください。

  2. Flutter 3.44 以降、Swift Package Manager はデフォルトで有効になっています。Swift Package Manager が有効になっていることを確認するには、2 つの方法があります。1 つ目の方法は、単一のプロジェクトに対して Swift Package Manager を有効にするものです。これにより、グローバルな設定に関係なく、ローカル開発環境でそのプロジェクトを読み込むすべてのユーザーが Swift Package Manager を使用するようになります。

    pubspec.yaml
    # ...
    
    flutter:
      	uses-material-design: true
    
        #追加開始
      	config:
    			enable-swift-package-manager: true
    #追加終了

    2 つ目のアプローチは、すべてのプロジェクトに対して Swift Package Manager をグローバルに有効にするもので、Flutter 3.44 以降ではデフォルトで有効になっています。以下のコマンドを実行することで、この機能を有効にし、確認することができます。

    flutter config --enable-swift-package-manager

    詳細については、Flutter のドキュメント「アプリ開発者向け Swift Package Manager(英語)」を参照し、プロジェクトに最適なアプローチを選択してください。

  3. ターミナルを開き、Flutter プロジェクト ディレクトリー内の ios フォルダーに移動してください。

  4. PodfilePodfile.lock、および Pods ディレクトリーを削除してください。

  5. 以下のコマンドを実行してください。

    pod deintegrate
  6. 以下のコマンドを実行して、プロジェクトのデフォルトの Xcode ワークスペースを開きます。

    open Runner.xcworkspace
  7. ワークスペースから Pods プロジェクトを削除してください。

  8. deintegrate で検出されなかった場合は、Runner プロジェクトから Pods の参照を削除してください。

  9. Runner ターゲットの 全般 タブで、iOS の Minimum Deployment を手動で 18.0 以上に更新してください。

プロジェクトの性質上、CocoaPods を完全に解除することが適切でない場合は、Podfile 内の Runner ターゲットから Runtimecore および arcgis_maps_ffi の Pod を削除することで、arcgis_maps の CocoaPods 設定のみを削除することができます。

podfile
target 'Runner' do
	use_frameworks!

	pod 'Runtimecore', :podspec => '../arcgis_maps_core/ios/Runtimecore.podspec'
	pod 'arcgis_maps_ffi', :podspec => '../arcgis_maps_core/ios/arcgis_maps_ffi.podspec'

	flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
	target 'RunnerTests' do
		inherit! :search_paths
	end
end

パーミッションを必要とする機能

ArcGIS Maps SDK for Flutter の一部の機能には、追加の権限が必要です。 ArcGIS Maps SDK for Flutter に依存する iOS アプリを App Store にデプロイするには、以下の記述が必要です。 位置情報へのアクセス許可を必要とする API をアプリがアクティブに使用している場合のみ、ユーザーに位置情報へのアクセス許可を求めるプロンプトが表示されます。

次のコード例では、情報プロパティ リストにこれらを含めています。

ios/Runner/Info.plist
<dict>
	<!-- 追加開始 -->
	<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
	<string>Location permission is required to view your position.</string>
	<key>NSLocationWhenInUseUsageDescription</key>
	<string>Location permission is required to view your position.</string>
	<!-- 追加終了 -->
	<key>CFBundleDevelopmentRegion</key>
	<string>$(DEVELOPMENT_LANGUAGE)</string>

追加ダウンロード

サンプル コードデータの追加ソースは、あなたの開発プロジェクトを強化するために利用可能です。本ガイドは、スタンドアロンの開発者向けドキュメントとしてダウンロードすることもできます。

サンプル コード

独自のアプリケーションに追加できるさまざまな強力な機能を説明した、実践的なサンプル コードを入手できます。 サンプルを検索し、サンプル ドキュメントで関連するコードを参照するか、サンプル リポジトリからコードをダウンロードしてローカルで実行します。

スタンドアロンの開発者向けドキュメント

ダウンロード ページ から、開発者向けドキュメントをアーカイブとしてダウンロードできます。アーカイブには、ローカル Web サーバからドキュメントを提供する手順が含まれているため、インターネットに接続しなくてもドキュメントにアクセスできます。スタンドアロン ドキュメントには、開発者ガイド、API リファレンス、チュートリアル、およびサンプル ドキュメントが含まれています。このドキュメントは、パブリックなインターネット上ではなく、ローカルのスタンドアロン コンピューターまたは内部ネットワーク上で実行するように設計されています。

ダウンロードしたドキュメントのアーカイブを解凍するには、無料のオープンソース ファイル アーカイブ ユーティリティー 7-Zip をお勧めします。

ローカルでドキュメントを公開する方法

  • 使用する SDK のドキュメントをダウンロードします。 ダウンロードしたファイルは .zip アーカイブ形式になっています。
  • アーカイブをローカル フォルダに解凍します。 解凍されたアーカイブには、publicinstall の 2 つのサブフォルダがあります。
  • install フォルダ内の README.md ファイルを開き、選択した Web サーバーの指示に従います。
ライブ ドキュメント サイトはリリースとリリースの間に定期的に更新されますが、スタンドアロン ドキュメントは静的で、最初のリリース後は更新されません。

補足データ

投影エンジン データ

測地系変換は、ある空間基準から別の空間基準へジオメトリーを投影する際に、2つの空間基準の基礎となる測地系に違いがある場合に使用されます。測地系変換は、数学的に定義する(方程式ベースの変換)ことも、外部のサポート ファイルに依存する(グリッドベースの変換)ことも可能です。アプリでグリッドベースの変換を使用する場合、投影エンジン ファイルが存在する必要があります。投影エンジン ファイルが無い状態で変換をしようとすると、エラーが発生します。API は、必要なファイルがローカル ファイル システムで利用可能かどうかを検出できます。

グリッドベースの変換を使用している場合は、ダウンロード ページからサポートする 投影エンジン ファイルをダウンロードしてください。 座標系、投影、測地系変換の操作に関する詳細は、Spatial references トピックを参照してください。

Electronic Navigational Charts (ENC)

航海用電子海図(ENC)は、水路や海上の情報を可視化し、分析するためのジオリファレンスされたベクター データセットです。SDK は、国際水路機関(IHO)S-57 規格 に準拠した ENC をサポートしています。

航海用電子海図 (ENC) を使用する場合は、ダウンロード ページから hydrography データをダウンロードします。

ENC データの操作の詳細については、Display electronic navigational charts のトピックを参照してください。