LoginSignup
14
11

More than 5 years have passed since last update.

特定の端末でGoogle Mapsを正しく表示できない場合はライトモードを使うと良かった

Last updated at Posted at 2016-05-06

概要

Google Maps Android APIを使用してGoogle Mapsを表示する場合に、特定の端末で以下のような黒い領域が出現(スクリーンショットでは映らない)し、Google Mapsを上手く表示できない場合に対処したのでメモ。

qiita_20160506.png

対処方針

問題が発生する端末

手元の検証端末のうち以下の2端末で現象が再現した。

端末 OSバージョン
Disney Mobile on docomo N-03E 4.0.4
GALAXY S II SC-02C 4.0.3

さらに複数の端末での検証は、時間的な問題で不可能だったのでこの2例で判断。比較的古い端末で発生している点、特定のOSのバージョンで発生していない点から判断し対策を取ることにした。

地図の表示方法の変更

Google Maps Android APIのドキュメントを確認すると、ライトモードという表示方法が用意されていた。

Google Mapsをライトモードで利用するとビットマップ画像で表示できる。通常モードとライトモードでの機能の差はドキュメントで確認できる。

対処方法

特定のOSバージョンを閾値としてそれ未満のバージョンの場合にライトモードを使用してGoogle Mapsを表示する。今回は閾値にするバージョンをKitKatに指定した。

実装

GoogleMapOptionsにライトモードを使用するかを指定するメソッドがあるのでOSバージョンによって切り替える。


// OSバージョンによってライトモードを使用するか設定
GoogleMapOptions options = new GoogleMapOptions();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
    options.liteMode(true);
} else {
    options.liteMode(false);
}

// SupportMapFragmentのインスタンスを取得する際にGoogleMapOptionsを引数として渡す
SupportMapFragment mapFragment = SupportMapFragment.newInstance(options);
mapFragment.getMapAsync(new OnMapReadyCallback() {
    @Override
    public void onMapReady(GoogleMap googleMap) {
      // 各種設定
    }
});

// MapFragmentを表示
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.map, mapFragment);
ft.commit();

結果

Disney Mobile on docomo N-03E、GALAXY S II SC-02Cの2端末で現象が再現しないことを確認した。また、その他の端末でも問題は発生していない。

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11