googleMapでヒートマップ

    どうも。
    伊藤です。

    最近、久しぶりにAndroidの開発をしています。
    そこでGoogleMapを利用してヒートマップを実装することになりましたので備忘録も兼ねて実装方法を書いてみます。

    便利な世の中になりましたので、ヒートマップを実現するユーティリティがオフィシャルで存在します。
    その名は「Google Maps Android API Utility」。

    このユーティリティを使うとKMLやBubble iconも簡単に実装でき、今回の目的であるヒートマップも容易に実装ができます。
    ヒートマップ実装時の公式ガイドはこちらをご参照ください。
    上記URLを見ていただくと全部丁寧に書かれていますが・・・続けます!(AndroidStudioを利用している前提で書きます。)

    まず、上記ライブラリをGradleのconfigに追加します。

    compile ‘com.google.maps.android:android-maps-utils:0.3+’

    次に、座標情報(経度緯度)を配列に設定します。

    ArrayList geoList = new ArrayList();
    for (LatLngInformation latLngInformation : latLngInformations)
    geoList.add(new LatLng(latLngInformation.getLat(), latLngInformation.getLng()));

    そして、HeatMapTileProviderのインスタンスを作成し、上記で作成した座標情報(LatLng)を渡します。
    グラデーション(gradient)の勾配は適当に設定してみてください。

    HeatmapTileProvider provider = new HeatmapTileProvider.Builder()
    .data(geoList)
    .radius(50)
    .gradient(new Gradient(HeatColor, StartPoints))
    .opacity(0.8)
    .build();

    最後に、googleMapインスタンスに上記で作成したプロバイダーをオーバーレイとして追加します。

    mMap.addTileOverlay(new TileOverlayOptions().tileProvider(provider));

    たったこれだけで以下のようなヒートマップの地図を作成できます。
    map

    ではでは。