@Override
  public void updateMapLayer() {
    MapType mapType = Controller.getInstance().getPreferencesManager().getMapType();
    if (mapType == currentMapType) return;
    currentMapType = mapType;

    if (customTileOverlay != null) customTileOverlay.remove();
    customTileOverlay = null;

    switch (mapType) {
      case GoogleNormal:
        googleMap.setMapType(MAP_TYPE_NORMAL);
        return;
      case GoogleSatellite:
        googleMap.setMapType(MAP_TYPE_SATELLITE);
        return;
      case GoogleTerrain:
        googleMap.setMapType(MAP_TYPE_TERRAIN);
        return;
      case GoogleHybrid:
        googleMap.setMapType(MAP_TYPE_HYBRID);
        return;
    }

    googleMap.setMapType(MAP_TYPE_NONE); // Don't display any google layer

    UrlTileProvider provider = getTileProvider(mapType);
    if (provider != null) {
      customTileOverlay = googleMap.addTileOverlay(new TileOverlayOptions().tileProvider(provider));
      customTileOverlay.setZIndex(-100);
    }
  }