Xamarin for VisualStudioでGoogleMapsAPIを使う

# この記事でやること
VS2015で、GoogleMapを表示するAndroidアプリを作る

# 開発環境
IDE：VisualStudio2015 Community
言語：C#
その他：Xamarin.Androidを使う

# プロジェクトの作成
画像のテンプレートでプロジェクトを作る
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/112111/3ed14359-5978-0ccf-8ce7-0a5772e78a88.png)

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

まずは下のサイトにアクセスして、Googleアカウントでログインする
[Google Developers Console](https://console.developers.google.com/)

下線部をクリック
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/112111/5fc0c0e3-399d-89e1-4fb6-9ffd0bc8997a.png)

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

[Google Maps Android API]をクリックして、
次の画面で[Enable]
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/112111/f0ac43d4-6f86-97db-8501-d539fc79637a.png)

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

[パッケージ名とフィンガープリントの追加]を選択。
APIキーの名前は任意に設定して、
[パッケージ名]はAndroidManifest.xmlを確認するか、[プロジェクト]の[プロパティ]より、[AndroidManifest]からパッケージ名を確認する。
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/112111/71de5b1f-47d2-d61e-4227-83a8b2e82e59.png)

[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>`タグの中に、以下のコードを書き込む

```xml: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を開き、
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/112111/505b5444-e7f5-7c83-a48a-3bdb33edaf48.png)

[Google Play service]がインストールされていなければ、インストールする
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/112111/e0d3e71d-c914-391c-9d6a-abf6411c0c0d.png)

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


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

```xml: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の編集
テンプレートで、ボタンを押すたびにカウントしていくプログラムが書かれているので、それを削除する
すると、ソースコードはこんな感じになるはずだ

```csharp: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://www.buildinsider.net/mobile/xamarintips/0020

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