Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

概要

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端末で現象が再現しないことを確認した。また、その他の端末でも問題は発生していない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした