Xamarin for VisualStudioでGoogleMapsAPIを使う


この記事でやること

VS2015で、GoogleMapを表示するAndroidアプリを作る

開発環境

IDE:VisualStudio2015 Community
言語:C#
その他:Xamarin.Androidを使う

プロジェクトの作成

画像のテンプレートでプロジェクトを作る

APIキーの取得

GoogleMapsAPIを利用するためには、アプリケーションのマニフェストファイルにAPIキーと呼ばれるものを設定しなければならない。それの取得方法を説明する。

まずは下のサイトにアクセスして、Googleアカウントでログインする
Google Developers Console

下線部をクリック

プロジェクト名、プロジェクトIDを、任意に設定して、[作成]

[Google Maps Android API]をクリックして、
次の画面で[Enable]

[認証情報]→[APIを呼び出す場所]で[Android]を選択し、
[必要な認証情報]をクリック

[パッケージ名とフィンガープリントの追加]を選択。
APIキーの名前は任意に設定して、
[パッケージ名]はAndroidManifest.xmlを確認するか、[プロジェクト]の[プロパティ]より、[AndroidManifest]からパッケージ名を確認する。

[SHA-1 証明書のフィンガープリント]は、JDKに付属しているkeytool.exeというアプリケーションを使って確認する。
パスが通っている場合は、コマンドプロンプトで、keytoolと叩けばhelpが出てくる。出てこなければ、
[C:\Program Files (x86)\Java\jdk(バージョン名)\bin]を、Windowsの[システム環境変数]の[Path]に、加えておけばいい。
cdコマンド使うなり何なりして、keystoreファイルのある場所(C:\Users\%USERNAME%\AppData\Local\Xamarin\Mono for Android)で以下のコマンドを叩く
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
そしたらフィンガープリントが出力されているはずなので、SHA-1をコピペする。

入力が終わったら、APIキーを作成する

キーが表示されるので、それをコピーしておく(次のAndroidManifestの編集で使う)

AndroidManifestの編集

権限の取得、APIの設定等を行う

[プロジェクト]の[プロパティ]より、

[Application]で、
実機で実行する場合は、実機のAndroidのバージョンを確認して、[Compile using Android version]を、実機のバージョンと合わせる

[AndroidManifest]→[Configuration properties]で、
[ACCESS_COARSE_LOCATION]
[ACCESS_FINE_LOCATION]
[ACCESS_NETWORK_STATE]
[INTERNET]
[WRITE_EXTERNAL_STORAGE]
にチェックを付ける

次に、AndroidManifest.xmlを開いて、<application>タグの中に、以下のコードを書き込む

AndroidManifest.xml
<meta-data
      android:name="com.google.android.gms.version"
      android:value="@integer/google_play_services_version" />
<meta-data
      android:name="com.google.android.maps.v2.API_KEY"
      android:value="(先ほど取得したAPIキー)" />

AndroidSDKの確認

ここからSDK Managerを開き、

[Google Play service]がインストールされていなければ、インストールする

ライブラリのDL

ソリューションを右クリックして、[ソリューションのNuGetパッケージの管理]をクリック
[参照]タブに移り、[Xamarin.GooglePlayServices.Maps]で検索
[Xamarin.GooglePlayServices.Maps]を、プロジェクトにインストール

レイアウトの編集

ソリューションエクスプローラから、[Resourses]→[layout]→[Main.axml]、下にある[Design]タブから、[Source]タブに移動
テンプレートで書かれているButtonタグを削除して、以下のコードを追加

Main.axml
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:name="com.google.android.gms.maps.MapFragment"/>

MainActivityの編集

テンプレートで、ボタンを押すたびにカウントしていくプログラムが書かれているので、それを削除する
すると、ソースコードはこんな感じになるはずだ

MainActivity.cs

namespace GoogleMapsAPI
{
    [Activity( Label = "GoogleMapsAPI", MainLauncher = true, Icon = "@drawable/icon" )]
    public class MainActivity : Activity
    {
        protected override void OnCreate( Bundle bundle )
        {
            base.OnCreate( bundle );

            // Set our view from the "main" layout resource
            SetContentView( Resource.Layout.Main );
        }
    }
}

ビルド

[F5]キーでビルド開始
自分の環境では、初回のビルドに結構時間がかかった
今までの手順が正しくできていれば、端末にGoogleMapが表示されているはずだ

参考にしたサイト

その他

サンプルプログラム
http://1drv.ms/1YeLS2M