특정 기기에서 Google 지도를 올바르게 표시할 수 없는 경우 라이트 모드를 사용하는 것이 좋았습니다.

개요



Google Maps Android API를 사용하여 Google Maps를 표시하는 경우에 특정 기기에서 다음과 같은 검은 영역이 출현(스크린샷에서는 나타나지 않음)하고 Google Maps를 잘 표시할 수 없는 경우에 대처했기 때문에 메모.



대처방침



문제가 발생하는 기기



수중의 검증 단말 중 이하의 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 문서 을 확인하면, 라이트 모드라는 표시 방법이 준비되어 있었다.
  • htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 마 ps / 도쿠 멘 타치 온 / 안 d 로이 d 아피 / ぃ

  • Google Maps를 라이트 모드로 이용하면 비트맵 이미지로 표시할 수 있다. 일반 모드와 라이트 모드의 기능 차이는 문서로 확인

    해결 방법



    특정 OS 버전을 임계값으로 사용하지 않는 버전의 경우 라이트 모드를 사용하여 Google 지도를 표시합니다. 이번에는 역치로 하는 버전을 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단자에서 현상이 재현되지 않는 것을 확인했다. 또한, 다른 단말기에서도 문제는 발생하지 않는다.

    좋은 웹페이지 즐겨찾기